DOJO TabContainer是否有在切换选项卡时触发的事件?
我想它应该有,但是我在文档中找不到相关内容。 :(
解决方案:看起来我在这里找到了一个解决方案:
Dijit TabContainer Events - onFocus
不是最容易搜索的主题标题 :/
DOJO TabContainer是否有在切换选项卡时触发的事件?
我想它应该有,但是我在文档中找不到相关内容。 :(
解决方案:看起来我在这里找到了一个解决方案:
Dijit TabContainer Events - onFocus
不是最容易搜索的主题标题 :/
将aspect.after
连接到TabContainer的selectChild
方法:
var tabContainer1 = registry.byId("tabContainer1");
aspect.after(tabContainer1, "selectChild", function() {
console.log("tab changed");
});
如果你对特定的选项卡感兴趣,可以连接到其ContentPane的_onShow
事件:
var contentPane1 = registry.byId("contentPane1");
aspect.after(contentPane1, "_onShow", function() {
console.log("[first] tab selected");
});
在jsFiddle上查看实现效果:http://jsfiddle.net/phusick/Mdh4w/
来自于文档:
var tabs = registry.byId('someTabs');
tabs.watch("selectedChildWidget", function(name, oval, nval){
console.log("selected child changed from ", oval, " to ", nval);
});
http://dojotoolkit.org/reference-guide/1.7/dijit/layout/StackContainer.html#published-topics
[widgetId]-addChild,
[widgetId]-removeChild
[widgetId]-selectChild
http://dojotoolkit.org/reference-guide/1.7/dojo/subscribe.html#dojo-subscribe
StackContainer::selectChild
方法的源代码时感到非常惊讶,因为看到了topic.publish(this.id+"-selectChild", page)
。 - phusickrequire(["dijit/registry", "dojo/on", "dojo/ready", "dojo/domReady!"], function (registry, on, ready) {
ready(function () { //wait till dom is parsed into dijits
var panel = registry.byId('mainTab'); //get dijit from its source dom element
on(panel, "Click", function (event) { //for some reason onClick event doesn't work
$('.hidden_field_id').val(panel.selectedChildWidget.id); //on click, save the selected child to a hidden field somewhere. this $ is jquery, just change it to 'dojo.query()'
});
});
});
//include this function if you want to reselect the tab on page load after a postback
require(["dijit/registry", "dojo/ready", "dojo/domReady!"], function (registry, ready) {
ready(function () {
var tabId = $('.hidden_field_id').val();
if (tabId == null || tabId == "")
return;
var panel = registry.byId('mainTab');
var tab = registry.byId(tabId);
panel.selectChild(tab);
});
});
dojo.connect
而不是aspect.after
即可。它们是相同的。 - phusick