0

私たちの ember コードで発生している速度の問題について、ビューのコンテキストを切り替える方法を見つけようとしています。

私たちが持っているもののサンプル: {{collection tagName="tbody" contentBinding="App.Controller.allTickets" itemViewClass="App.View.TicketList"}}

App.View.TicketList はテンプレートとして Ticket-List を持ちます App.Controller.allTickets は ArrayController です。

問題は、App.Controller.allTickets の content 配列内のすべての項目がチケット オブジェクト (Ticket-List が表示するテンプレート) であることです。チケット オブジェクトには、Ticket-List テンプレートに表示される計算されたプロパティがあります。コンテンツ配列に多数の Ticket オブジェクト (> 1000) があり、それらを作成し、ブラウザでテンプレートが表示されている間にそれらをコンテンツ配列にプッシュするだけで、多くの時間がかかります (> 2 分)。

私がやろうとしているのは、App.Controller.allTickets の最初の 10 個のチケット オブジェクトが「実際の」チケット オブジェクトであり、残りがダミー オブジェクトであるシステムを作成することです (オブジェクトはチケット オブジェクトに似ていますが、デフォルト値のみで、計算されたプロパティはありません)。 )。次に、チケットリストのスクロールイベントを監視し、チケット(Ticket-Listテンプレートで表示)がdivの表示部分にスクロールされたときに、ダミーチケットである関数を考えています。チケット リスト テンプレートのコンテキストを正しいチケット オブジェクトに追加し、そのビューを再レンダリングします。

つまり、ビュー/テンプレートのコンテキストを JavaScript から変更するにはどうすればよいですか?

4

2 に答える 2

0

あなたがやりたいのは、コンテンツにバインドされている表示可能なチケットのプロパティと、追加のチケットの表示をトリガーするビューの入力プロパティをコントローラーに作成することだと思います。このプロパティには、最初は最初の10個のチケットオブジェクトのみが含まれ、ビューには完全なチケットリストコンテンツの代わりにこれが表示されます。ユーザーがスクロールしたら、後続の10個のチケットをコントローラーの表示されているチケットプロパティに追加すると、ビューが更新されます。

于 2012-09-27T16:51:18.477 に答える
0

これを確認することをお勧めします... ember.jsを使用した無限スクロール(遅延読み込み)
この背後にあるロジックは、探しているものを構築するのに役立ちます

于 2012-09-28T05:41:08.890 に答える