我试图了解在视图集合中绑定属性的最佳方式。
根据您的文档,在 MVC 架构中,“我们实际上应该将视图的属性绑定到控制器层”,而不是直接绑定到模型实例。当我们有一个只控制一个对象的控制器时,这很有效,但是当我们处理集合时,它似乎并没有那么好。
在您的典型 ToDos 示例中,您的观点是
{{#collection contentBinding="Todos.todosController" tagName="ul"
itemClassBinding="content.isDone"}}
{{view Em.Checkbox titleBinding="content.title"
valueBinding="content.isDone"}}
{{/collection}}
这本质上是直接绑定到每个模型的属性。我知道数组控制器以某种方式代理了这些属性,但是您仍然只能引用直接存在于模型对象上的那些属性。
假设在我的 ToDo 应用程序中,我想在视图上添加更多状态,例如,我希望它能够展开或折叠。如果我有一个表示整个 ToDo 视图的视图对象,包括扩展框架和内容,我希望该视图上的某些属性“isExpanded”绑定到某些东西。
如果我只有一个对象和一个非数组控制器,我可能会在控制器中放置一个“isExpanded”属性。然后,当您翻转小三角形图标时,我可以在控制器上设置此属性,视图会注意到这一点并展开。
但是对于数组控制器,没有明显的方法来拥有这个属性并让它引用单个 ToDos。从上面的规范示例中,似乎我必须绑定到模型上的属性。但是,将它作为临时的、以视图为中心的属性(如“isExpanded”)直接放入 ToDo 模型本身似乎很愚蠢。
有什么建议么?