События Dijit TabContainer - onFocus - PullRequest
       15

События Dijit TabContainer - onFocus

3 голосов
/ 01 сентября 2011

У меня есть контейнер вкладок, и я хочу выполнить несколько js, когда нажимаю на строку заголовка вкладки.

Кажется, я не могу понять, как добавить к этому событие.


РЕДАКТИРОВАТЬ:

Похоже, я буду использовать onFocus , но мне все еще не удается найти правильный синтаксис.


РЕДАКТИРОВАТЬ: Обнаружено onFocus и onBlur , но все еще возникают проблемы при его запуске.

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011

Вам необходимо подключиться к событию _transition.

var tabs = dijit.byId("tabs");
dojo.connect(tabs,"_transition", function(newPage, oldPage){
    console.log("I was showing: ", oldPage || "nothing");
    console.log("I am now showing: ", newPage);
});

Где "tabs" - ваш TabContainer.

1 голос
/ 21 февраля 2013

Вот полный пример кода, который работает в Dojo 1.8, я его протестировал:

require(["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 
            alert(panel.selectedChildWidget.id);  
        });
    });
});
0 голосов
/ 06 июня 2013

Правильное Dojo 1.7+ должно быть;

var tabs = registry.byId('someTabs');
tabs.watch("selectedChildWidget", function(name, oval, nval){
    console.log("selected child changed from ", oval, " to ", nval);
});

другим способом может быть

var tabs = registry.byId('someTabs');
aspect.after(tabs, "selectChild", function (event) {
     console.log("You selected ", tabs.selectedChildWidget.id);
});
...