Backbone 从哪里获取的最佳实践 models/collections

Backbone best practices where to fetch models/collections

我继承了一个遵循以下格式的代码库:路由器设置控制器,控制器获取所需的 collection/model,然后控制器 set/passes 查看 collection/model .

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

我只想加载模型 when/if 他们单击一个按钮。所以我的问题是,我可以在视图中设置 model/fetch 吗,还是应该在控制器中设置?采用这样的 controller/view 设置时是否有 backbone 最佳实践?

我之所以问,主要是因为直接在视图中添加这项新功能对我来说似乎更容易。但这是一种不好的做法吗?我是这么认为的,所以我开始沿着在视图中触发事件的路径让控制器获取模型,然后以某种方式将其传递回视图(但我不确定该怎么做)。 ..似乎有很多不必要的跳圈动作?

可以通过视图获取集合。由于'plain'backbone没有Controller,View负责它的职责。

但是恕我直言,通过控制器获取集合是更好的做法,它更容易扩展、支持和测试。

唯一的困难是设置Controller和View上下文事件之间的通信。其中一种方法是在

等上下文事件上触发消息总线事件
events: {
   'click .some': function() {
       this.trigger('someHappend', { some: data })
   }
}

并在控制器中监听这个事件

this.on(someViewInstance, 'someHappend', function() {
    // do something in controller
})

如果您已经继承了具有您描述的结构的代码,您最好遵循它。此外,您可能对 MarionetteJS as significant improvement. Also highly recommend you to checkout BackboneRails、不是免费但非常有用的截屏视频感兴趣,尤其是在维护大型应用程序方面