-1

ページ内の各ボタンで関数を呼び出す次のコードがあります。

       dojo.query('.btn').forEach(function(item){
        Obj =   new MyClass(item); // class calls the ajax request on error of each btn click I have to handle some functionality in below function showError
        dojo.connect(Obj, 'showError', dojo.hitch(Obj, function(errors){
            console.log(Obj + 'came');
        }));

ここで dojo.hitch を使って各オブジェクト Obj の状態を維持しようとしましたが、維持されていません。最初の Obj だけが発火しています。2 つ目の Button についても、最初の Obj が発火しています。

4

1 に答える 1

0

Objグローバル変数として宣言されています。を前に置いてみてくださいvar。例えば:

var Obj = new MyClass(item);

を指定しない場合var、 というグローバルにアクセス可能な変数が作成されObjます。これは、ループするたびに同じグローバル変数を参照することを意味します。この結果、それぞれがObj同じオブジェクトに接続されます (そのため、両方のボタンが同じオブジェクトに接続されます)。

また、StackOverflow でこの質問を読んで、変数の宣言とグローバル スコープに関する詳細を確認してください。

于 2013-09-23T08:57:44.180 に答える