2012-09-27 58 views
0

對於速度問題,我們使用了我們的ember代碼,我試圖找到切換視圖上下文的方式。ember.js從javascript切換視圖上下文

我們所擁有的樣本: {{collection tagName="tbody" contentBinding="App.Controller.allTickets" itemViewClass="App.View.TicketList"}}

App.View.TicketList已作爲模板票證列表 App.Controller.allTickets是ArrayController。

問題是App.Controller.allTickets的內容數組中的每個項目都是一個票證對象(該模板的票證列表顯示)。票證對象具有計算在票證列表模板中顯示的屬性。我們在內容數組中有很多Ticket對象(> 1000),只是創建它們,將它們推送到內容數組中,而模板在瀏覽器中可見時需要花費大量時間(> 2分鐘)。

我想要做的是創建一個系統,其中App.Controller.allTickets中的前10個票據對象是'真正的'票據對象,而其餘的是虛擬對象(像票據對象但只有默認值並沒有計算的屬性)。 然後我正在考慮一個函數,它將監視票證列表上的滾動事件,並且當票證(與Ticket-List模板一起顯示)滾動到div的可見部分時,這是一張假票證,然後改變將Ticket-List模板的上下文映射到正確的Ticket Object,然後重新顯示該視圖。

簡而言之,如何更改JavaScript中的視圖/模板的上下文?

回答

0

我認爲你想要做的是在你的控制器上創建一個屬性,這個屬性綁定到視圖上的內容和一些輸入屬性,以觸發顯示附加票據。該屬性最初只有前十個票證對象,而您的視圖將顯示該票據而不是完整的票單列表內容。用戶滾動時,將隨後的十張票添加到控制器的可見票據屬性中,視圖將更新。