2013-04-09 2 views
2

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

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

< 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){...} не работает для меня, поэтому требуется старый стиль.

+0

я изменил dojo.byId к dijit.registry.byId так, что виджет возвращается и не объект DOM. Но, конечно, это ничего не изменило, просто для вашей информации. – user2219190

ответ

3

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

dojo.aspect.after(...); 

вместо

aspect.after(...); 

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

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

dojo.require("dojo.aspect"); 

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

Источник:

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

EDIT:

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

http://jsfiddle.net/9Xdv2/

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

dojox.mobile.parser.parse(); 

Все в jsfiddle!

Lucian

+0

Я изменил его на dojo.aspect.after, а также изменил запрос с/на. но проблема все еще существует. Использование додзё.готовая команда исправила проблему аспект, но теперь предупреждение запускает «неопределенный» вместо «on» или «off». На самом деле разочарование для новичка :(Спасибо за вашу помощь :) – user2219190

+0

не могли бы вы обновить свой вопрос кодом ИЛИ ЛУЧШИМ: перейдите на jsfiddle.com и попытайтесь понять суть вашего кода и опубликовать ссылку в исходном вопросе. –

+0

я обновил код выше. Я также попробовал jsfiddle (мой первый раз :)), но dojo не работает для меня там (http://jsfiddle.net/HK7at/1/) – user2219190

2

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

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

И в ваших ЯШ:

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); 
      }); 
    }); 
}); 
+0

также посоветует вам переключиться на @ user –

+0

, и я буду делать все функциональные работы. Я уже пробовал это так (конечно, мой полный код намного больше, а также включает в себя), и он не работал, поэтому я положил его в конец списка todo. В настоящее время мне приходится решать проблему с xhr, если вам интересно;) http://stackoverflow.com/questions/15904255/dojo-xhr-post-doesnt-work – user2219190

+1

Рабочая скрипка с этим типом синтаксиса: http://jsfiddle.net/o6xu9b11/ – mbomb007

Смежные вопросы