dojo - доджо-аспект не определен, не понимаю, почему




undefined aspect (2)

Я хочу обновить от dojo 1.7 до 1.8.3, поэтому мне нужно заменить команду dojo.connect.

переключатель:

< div id="universalPushSwitch" data-dojo-type="dojox.mobile.Switch" style="float:right" class="mblSwRoundShape1"></div>

Теперь у меня есть:

dojo.require("dijit/registry");
dojo.require("dojo/ready");
dojo.require("dojox/mobile/ListItem");
dojo.require("dojo/aspect");

dojo.ready(function(){
  dojo.aspect.after(dijit.registry.byId("universalPushSwitch"), "onStateChanged", 
        function(newState){
        alert(newState);
    }
)});

Firebug говорит: «Аспект не определен»

PS: Я знаю, что я не использую новый загрузчик AMD. Это старый проект, и я также новичок во всем додзё. Простой перевод из dojo.require("x");dojo.require("y"); require(["x","y"], function (x,y){...} не работает для меня, поэтому требуется старый стиль.


Попробуйте использовать:

dojo.aspect.after(...);

вместо

aspect.after(...);

И не останавливайтесь на следующей функции! :-)

Если это не сработает сразу, попробуйте загрузить аспект глобальным способом (с точкой, а не слэшем):

dojo.require("dojo.aspect");

Также было бы возможно, что старое додзё несовместимо с «/» и что оно работает только с точками!

Источник:

http://livedocs.dojotoolkit.org/dojo/require

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

Вот рабочая скрипка, основанная на вашей скрипке:

http://jsfiddle.net/9Xdv2/

Основная проблема с вашим кодом заключалась в том, что вы не анализировали html. Dojo-парсер преобразует некоторые специфические html в «объекты jjocript-доджо»! Вы используете этот вид html много! Вы должны были сделать:

dojox.mobile.parser.parse();

Все в jsfiddle!

Lucian


Поскольку вы используете dojo 1.8.3 и используете dojo 1.7, почему бы вам не использовать синтаксис AMD вместо pre-1.7? Вы бы сделали что-то вроде:

<div id="universalPushSwitch" data-dojo-type="dojox/mobile/Switch" style="float:right" class="mblSwRoundShape1"></div>

И в ваших js:

require(["dijit/registry",
         "dojox/mobile/ListItem",
         "dojo/aspect",
         "dojo/parser",
         "dojo/domReady!"
         ], function(registry, ListItem, aspect, parser){

    parser.parse().then(function(instances){
        aspect.after(registry.byId("universalPushSwitch"), "onStateChanged", 
           function(newState){
               alert(newState);
           });
    });
});






aspect