使用 Backbone.js 让模型一直监听所有嵌套模型和集合的最佳模式是什么?
我应该将嵌套模型/集合放入属性中吗?我应该手动创建亲子关系并触发事件吗?
最佳答案
与 Backbone.js 的大多数事情一样,您不会得到“正确”的答案,但我可以分享我是如何做到的。对于模型和 View ,我通常遵循以下准则:
View 和模型应该由“负责”它们的组件实例化。对于父子关系明确的模型或 View ,父模型应该实例化,通常在
initialize()
方法中。parent 应在实例化时绑定(bind)到子事件。
parent 应该“意识到” child ,并且可以在必要时调用子方法 - 我通常会使用此方法而不是触发子事件,因为它更明确。我试图让 child 独立于他们的 parent ,通过事件向上沟通。所以是的,深层嵌套模型将通过事件链进行通信。
我有时将
.set()
children 作为 Backbone 属性,但通常只使用普通的 Javascript 属性(例如this.child
)。这取决于上下文。使用 Backbone 属性提供change
事件,因此如果您需要监视子项是否发生更改,请使用这些。 Backbone 属性还使您能够在实例化时进行设置,例如var myModel = new Model({ other: otherModel })
- 但是因为 parent 通常实例化他们的 child ,所以这在那种情况下并不适用,我通常将这种模式用于非分层模型 -模型关系。在大多数情况下,我将子项设置为纯 Javascript 属性。
关于javascript - 让模型听嵌套模型和集合的最佳模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641707/