现在我明白这可以通过从它的模型中引用一个视图来实现。但是,我试图坚持 Backbone.js 的“最佳实践”,因为模型-> 视图通常是一对多的关系,这被认为是糟糕的实践。
我遇到的问题是这样的(代码示例是为了帮助您可视化问题):
我有一组分组视图。每个分组的视图数组包含来自多个集合的视图。例如,
var views; // Assume views is pre-populated with an array of views, each view's model may be stored in a different collection.
var viewGroups = _.groupBy(views, function(view) {
return view.model.attributes.timestamp; // Unix timestamp for example
});
当我遍历分组视图时,我需要访问模型的视图,该视图直接位于其集合中的每个视图模型之前。
我可以像这样访问集合中的先前模型:
_.each(viewGroups, function(viewGroup) {
_.each(viewGroup, function (view) {
var model = view.model;
var collection = model.collection;
var previousModel = collection.at(collection.indexOf(model) - 1);
});
});
但是由于模型与它的视图没有从属关系,我无法找出哪些视图订阅了集合中的前一个模型。
var previousModelsViews = ???
按照模型不了解视图的设计模式,我将如何做到这一点。