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 的内容数组中的每个项目都是一个票证对象(模板票证列表显示)。工单对象具有显示在工单列表模板中的计算属性。我们在内容数组中有许多 Ticket 对象(> 1000),只是创建它们,将它们推送到内容数组中,而模板在浏览器中可见则需要很多时间(> 2 分钟)。

我想要做的是创建一个系统,其中 App.Controller.allTickets 中的前 10 个票证对象是“真实”票证对象,而其余的是虚拟对象(像票证对象但只有默认值且没有计算属性的对象)。然后我正在考虑一个函数,它将观察票证列表上的滚动事件,并且当票证(使用票证列表模板显示)滚动到 div 的可见部分时,这是一个虚拟票证,然后更改将 Ticket-List 模板的上下文添加到正确的 Ticket Object,然后重新呈现该视图。

简而言之,如何从 javascript 更改视图/模板的上下文?

4

2 回答 2

0

我认为您想要做的是在您的控制器上为绑定到内容的可见票证创建一个属性,并在视图上创建一些触发显示其他票证的输入属性。此属性最初只有前十个工单对象,您的视图将显示它而不是完整的工单列表内容。当用户滚动时,将随后的十张票添加到控制器的可见票属性中,视图将更新。

于 2012-09-27T16:51:18.477 回答
0

你可能想看看这个...使用 ember.js 无限滚动(延迟加载)
这背后的逻辑可以帮助你构建你正在寻找的东西

于 2012-09-28T05:41:08.890 回答