0

私はこれに少し苦労してきました。モデルをレンダリングするためにバックボーンを使用し、ドロップダウン用にプラグインを選択しました。

新しいコレクションが入ってくると、jQuery の slideDown 効果を使用して各モデルがレンダリングされます。各モデルには、600 を超えるオプションを入力する必要がある選択ドロップダウンがあります。

私が直面している問題は、最初にドロップダウンを入力すると、slideDown アニメーションが途切れ途切れになり、実際には通常無視されることです (突然モデルが表示され、アニメーションが表示されません)。

私が試した別のオプションは、最初にモデルをレンダリングし、特定のドロップダウンにモデルの値のみを追加してから、選択した値を設定することです。次に、setTimeout が呼び出され、残りのオプションが設定されます (舞台裏で)。ただし、その場合、明らかな迷惑な遅延が発生します。タイムアウトを設定しないと、まだ存在しないドロップダウンを埋めようとします。

これを効率的に行う方法に何か欠けていますか? 選択ドロップダウンのオプションのリストをキャッシュしています。すべてのオプションを文字列にループしてドロップダウンのhtmlを置き換えることと、各オプションをループして一度に1つずつ追加することの両方を試みました。

私の問題は、ドロップダウンのアニメーションと 600 以上のオプションの組み合わせに関係していると思います。理想的には、モデルが表示された後、すぐにドロップダウン リストにデータを入力します。

4

2 に答える 2

0

タイムアウトは必ずしも必要ではありません。バックボーンで独自のイベントを作成できます。

initialize: function () {
  // When our event is triggered, load the dropdowns.
  this.on( 'doneWithThings', this.loadDropdowns );
},

// render the view
render: function () {
  // Whatever it is that you do when rendering.
  // When you're done rendering, trigger an event.
  this.trigger( 'doneWithThings' );
},

loadDropdowns: function () {
  // Load them!
}

私が試してみたい他のこと...

オプションはクライアント側 (JS 配列) に保持しますが、ユーザーが画面の slideDown セクションを展開しない限り、画面に描画しないでください。ここでも、slideDown 効果が発生したときにイベントを発生させます。

于 2012-10-29T18:00:12.540 に答える
0

理想的には、モデルが表示された後、すぐにドロップダウン リストにデータを入力します。

ブラックボーンはわかりませんが、アニメーションがある場合は、 jquery .promise()を見ることができます

$(":animated").promise().done(function() {
    //load data
  });​
于 2012-10-29T18:52:39.537 に答える