我继承了以下格式的代码库:路由器设置控制器,控制器获取所需的集合/模型,然后控制器设置/传递视图集合/模型。
我正在处理的当前View正在加载一个集合,现在我需要构建一个功能,根据单击的id,在视图渲染后获取单个模型的特征(注意模型来自a不同的收藏品。)
我只想在/点击按钮时加载模型。所以我的问题是,我可以在View中设置模型/获取,还是应该在控制器中执行此操作?采用这样的控制器/视图设置时,是否存在骨干最佳实践?
我主要问,因为我似乎更容易在视图中添加此新功能。但这是一种不好的做法吗?我是这么认为的,所以我开始在控制器的View中触发一个事件来获取模型,然后以某种方式将其传递回View(但我不确定如何做到这一点)......似乎有很多不必要的箍跳?
答案 0 :(得分:0)
可以通过视图获取集合。由于'普通'骨干不是控制器,负责它的责任。
但imho通过控制器获取集合是更好的实践,它更容易扩展和支持和测试。
唯一的困难是在Controller和View上下文事件之间设置通信。其中一种方法是触发上下文事件的消息总线事件,如
events: {
'click .some': function() {
this.trigger('someHappend', { some: data })
}
}
并在Controller
中收听此事件this.on(someViewInstance, 'someHappend', function() {
// do something in controller
})
如果您已经继承了您所描述的结构的代码,那么您最好遵循它。您也可能对MarionetteJS感兴趣是一项重大改进。还强烈建议您查看BackboneRails,屏幕录像不是免费但非常有用,特别是在大规模应用维护中