3

バックボーン ビュー内で、コレクションを反復処理し、アイテムごとに新しい子ビューをレンダリングしますが、間にわずかな遅延 (約 200 ミリ秒) があります。この例では、Flock は Sheep と呼ばれるバックボーン モデルのコレクションです:)

render: function () {
  Flock.each(this.renderSheep)
},

renderSheep: function (mySheepModel) {
   var sheep = new SheepView({model:mySheepModel})
   $(sheep.render().el).appendTo('#field').fadeIn();
}

これについてどうすればいいですか?

4

2 に答える 2

6

これはうまくいくはずです:

render: function () {
    var i = 0,
        _self = this;

    (function renderSheepWithDelay(delay) {
        if (i <= Flock.length) {
        _self.renderSheep(Flock.at(i));
            i += 1;
        setTimeout(renderSheepWithDelay, delay);
        }
    })(200);
},

基本的に、再帰関数を使用して、渡した特定の遅延の後に自分自身を呼び出します。関数はコレクション内のモデルを反復処理しており、コレクションを使い果たすと再帰的に自分自身を呼び出すのを停止します。

于 2012-07-14T20:12:24.480 に答える
-1

このようにsetTimeout関数でラップします

renderSheep: function (mySheepModel) {
   setTimeout(function () {
   var sheep = new SheepView({model:mySheepModel})
   $(sheep.render().el).appendTo('#field').fadeIn();
 }, 3000);
}

これにより、3 秒のタイムアウトが呼び出されます。

于 2012-07-14T19:50:19.477 に答える