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){...}は私にはうまくいかないので、古いスタイルが必要です。

4

2 に答える 2

3

使用してみてください:

dojo.aspect.after(...);

それ以外の

aspect.after(...);

そして、次の機能で止まらないでください! :-)

それがすぐにうまくいかない場合は、アスペクトをグローバルな方法でロードしてみてください (スラッシュではなくドットを使用):

dojo.require("dojo.aspect");

また、古い道場は「/」と互換性がなく、ドットでしか機能しない可能性もあります!

ソース:

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

編集

ここにあなたのフィドルに基づいた実用的なフィドルがあります:

http://jsfiddle.net/9Xdv2/

コードの主な問題は、html を解析しなかったことです。dojo パーサーは特定の html を「dojo javascript オブジェクト」に変換します。あなたはその種のhtmlをよく使います!次のことを行う必要があります。

dojox.mobile.parser.parse();

すべてが jsfiddle にあります!

于 2013-04-09T08:09:16.770 に答える
2

Dojo 1.8.3 を使用しており、Dojo 1.7 を使用しているので、1.7 より前の構文の代わりに AMD 構文を使用しないのはなぜですか? あなたは次のようなことをします:

<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);
           });
    });
});
于 2013-04-09T13:02:49.957 に答える