Backbone.js 获取模型/集合的主干最佳实践

Backbone.js 获取模型/集合的主干最佳实践,backbone.js,Backbone.js,我继承了一个遵循以下格式的代码库:路由器设置控制器,控制器获取所需的集合/模型,然后控制器设置/传递视图集合/模型 我正在处理的当前视图加载一个集合,现在我需要构建一个功能,在该功能中,我在视图渲染后,根据单击的id获取单个模型(请注意,该模型来自不同的集合) 我只想在他们单击按钮时加载模型。所以我的问题是,我可以在视图中设置模型/获取,还是应该在控制器中进行设置?当采用这样的控制器/视图设置时,是否有主干最佳实践 我问这个问题主要是因为在视图中添加这个新特性似乎更容易。但这是一种不好的做法吗?

我继承了一个遵循以下格式的代码库:路由器设置控制器,控制器获取所需的集合/模型,然后控制器设置/传递视图集合/模型

我正在处理的当前视图加载一个集合,现在我需要构建一个功能,在该功能中,我在视图渲染后,根据单击的id获取单个模型(请注意,该模型来自不同的集合)

我只想在他们单击按钮时加载模型。所以我的问题是,我可以在视图中设置模型/获取,还是应该在控制器中进行设置?当采用这样的控制器/视图设置时,是否有主干最佳实践


我问这个问题主要是因为在视图中添加这个新特性似乎更容易。但这是一种不好的做法吗?我想是这样的,所以我开始在视图中触发一个事件,让控制器获取模型,然后以某种方式将其传递回视图(但我不知道该怎么做)…这似乎是很多不必要的跳跃?

可以通过视图获取集合。由于“普通”主干网不是控制器,请查看负责it的职责

但imho通过控制器获取集合是更好的实践,它更易于扩展、支持和测试

唯一的困难是设置控制器和视图上下文事件之间的通信。其中一种方法是在上下文事件上触发消息总线事件,如

events: {
   'click .some': function() {
       this.trigger('someHappend', { some: data })
   }
}
并在控制器中侦听此事件

this.on(someViewInstance, 'someHappend', function() {
    // do something in controller
})
如果您已经继承了您描述的结构的代码,那么最好遵循它。此外,您可能对重大改进感兴趣。还强烈建议您结帐,屏幕广播不是免费的,但非常有用,特别是在大型应用程序中