0

プログラムでオブジェクトを (pushObject を使用して) 並べ替え可能なリストにプッシュしています。私の問題は、試してみる$(selector).sortable('refresh')$(selector).sortable('serialize')、シリアライズに最近追加されたdomアイテムが含まれていないことです。console.log($(selector)) できますが、dom アイテムが追加されたことはわかっているようです。

私の当初の考えでは、 pushObject が終了したら監視するイベントはありますか? それともコールバック?

4

1 に答える 1

2

pushObject で監視するイベントはありますか?

これを行う最も簡単な方法は、リストの長さが変更されたときに起動するオブザーバーを追加することです。しかし、おそらく、この場合、それだけでは十分ではありません。

これはタイミングの問題のようです。pushObject の直後に (またはオブザーバーでも) refresh を呼び出そうとすると、dom が更新される前に更新コードが実行されます。

トリックは$(selector).sortable('refresh')、新しい要素が dom に書き込まれた後に呼び出していることを確認することです。それはdomアイテムのビューまたはオブザーバーのdidInsertElementフックからのものかもしれませんが、@Lukeがコメントで私に思い出させたように、レンダリングが完了した後に実行するように更新をスケジュールするのが最善の方法です。何かのようなもの:

Em.run.schedule('afterRender', this, this.refreshSortable)
于 2013-05-25T02:22:05.570 に答える