backbone.js - 模型/视图如何链接到DOM元素?

时间:2011-03-16 22:07:25

标签: javascript jquery dom backbone.js

我只是在使用backbone.js和一些jQuery魔法来为即将到来的项目做准备。

一个测试用例包含一个表,其行由骨干视图呈现。它们在价值变化时得到了完美的重新渲染。然后整个表按jQuery插件(Animated Table Sort)排序,行移动到新位置。事实上,这个过程只运行一次,但下一次,行出现两次,一切都以混乱结束。

DOM元素和骨干视图之间的链接是否有可能无法处理这种变化?有没有解决方法?

3 个答案:

答案 0 :(得分:3)

当您使用像backbone.js或knockout.js这样的模型/视图框架进行开发时,我发现您需要重新安排您的思路和实现,以便对模型进行更改(如排序) ,并且不允许它们在视图中发生(比如使用jquery插件)。

如果您最终使用视图端脚本来做一些奇特的事情(动画是一个很好的例子),那么您可以通过禁用或扩展绑定来确保模型正确更新。 / p>

另请注意,根据documentation,动画排序插件会从DOM中删除表行,将它们添加到新DIV中,为它们设置动画,将它们从DIV中删除,然后将它们还原到表中。我想知道在完成这一切后,骨干网已经失去了对这些TD的追踪,并且当它在更改后重新渲染时,它只是添加了一个新的集合,因为最后一个集合已经“消失”。

答案 1 :(得分:1)

感谢您的回答。实际上,表格分类器做了很多事情,这使得fpr骨干很难维护绑定。我已切换到伟大的Quicksand plugin,它使用隐藏列表为另一个(可见)列表中的更改设置动画。更适合backbone.js。

答案 2 :(得分:0)

您的收藏品会维护您的模型订单,以及相应的视图。如果外部强制(如jQuery表排序插件)修改了视图的顺序,则此更改不会反映在Backbone集合中,因此很快就会失去同步。

此外,如果表格分类器克隆元素并删除原始元素,Backbone可能会丢失视图跟踪并最终重新创建它们。