2011-07-13 60 views
0

我正在使用xml api数据馈送的骨干js。我为每个接收xml的页面都有一个顶级模型,并将其转换为json。然后,我有模型中的其他方法,通过控制器将json模型的特定部分返回到特定视图。这一切都按预期工作。定期更新骨干JS模型

我想定期(通过setTimeout)更新顶级模型,让它触发更改事件并更新视图。我的问题是我应该在哪里处理/初始化这个周期性事件的触发来更新模型,因为它不是一个真正的用户触发事件?

回答

1

我会给我的模型一个startUpdate()方法,一个endUpdate()方法,和一个内部的onTimerUpdate()做一个提取。然后,您可以在模型上调用startUpdate()并让它根据需要运行,当服务器端更新不便时(例如,在客户操纵数据的过程中)暂停时,暂停它,然后重新启动它在客户端更改成功完成写入服务器之后。

更好的是,您可以将它制作成混合模式,并将其与多种不同的模型一起使用。

+0

所以我在模型中添加了startUpdate,endUpdate和onTimerUpdate。我在我的页面控制器的索引操作中调用了startUpdate,并将模型传递给各种视图,这些视图成功地将模型绑定到所有视图。我现在遇到的问题是我想通过控制器将模型的某些部分传递给不同的视图(例如data:model.getDerivedSubModel())作为通用属性来重用视图。 – user843058

+0

但是当我尝试这样做时,模型被更新,但是当重新呈现视图时(例如,当重新呈现视图时模型没有通过控制器),方法返回的派生数据保持不变。有没有一种方法可以通过控制器将模型的特定部分绑定到视图上?我意识到在一个模型中使用所有这些数据并不是理想的情况,但我不确定它是如何分离它的,因为它来自一个url并返回到一个xml blob中。 – user843058

+0

模型是事物的集合吗?或者它只是一个巨大的一滴?如果它是一个集合,您可以编写动态过滤器并使视图仅显示集合的一部分。不过,听起来我应该像你应该测试你的模型(即很多'console.log()s')并且看看更新中有什么变化,因为视图应该反映模型的当前状态。如果它改变了,那么视图也应该改变。 –