1

私は現在、グリッドスターベースのCMSモジュールに取り組んでおり、最終ユーザーがさまざまなレイアウトを作成できるようにするために、グリッドスターを複数回インスタンス化する必要があります。

設定する必要があるグリッドの数をループして、定義された反復に基づいて異なる引数で呼び出す必要があるコールバックを定義しようとすると、私の問題が発生します。それらをテストすると、(最後の) 同じ値。

私はそれが閉鎖の問題だと思います.私はこのフォーラムからいくつかの投稿を読んでもそれを解決しようとしていますが、成功していません.

ここに私のコードがあります:

var gridster= [];

var id_layouts = [];

$(".selectedLayout").each(function(){

    id_layouts.push($(this).val());

});

for(i=0; i<id_layouts.length; i++){

    makeGridster(i, id_layouts[i]);

}

function makeGridster(index, id_layout){

    gridster[index] = $('#blockcompositeGrid'+id_layout+' > ul').gridster({
        widget_margins: [10, 10],
        widget_base_dimensions: [100, 100],
        draggable:{
            stop: function(){

                return function(i, l){
                    updateSerialization(i, l)
                }(index, id_layout)
            }
        }
    }).data('gridster');

}

function updateSerialization(index, id_layout){

  console.log(index, id_layout);

    }

グリッドが構築されます。それで問題ありません。ご覧のとおり、ドラッグ アクション停止のコールバックとして関数を呼び出そうとしていますが、これは異なる引数で呼び出す必要があります。私が必要としているものに似ていると思われるこれを見つけましが、残念ながら私はコーヒースクリプトについて何も知りませ. 事前に助けてくれてありがとう

4

1 に答える 1

0

ループ内および stop 関数の定義内で、i 以外の別の変数名を使用してみてください。スコーピングのために、それらは互いに踏んでいる可能性があります。また、var を使用してループ内で i を定義し、var を使用せずに変数/プロパティを参照するとグローバルになります。

var キーワードの目的は何ですか? また、いつ使用 (または省略) する必要がありますか?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for

于 2014-01-05T13:35:45.330 に答える