您是从模型中还是从其他地方初始化 Backbone 视图?
我试图找出组织模型/视图的最佳方式。让您的模型初始化视图是否有意义?
感谢您提供任何信息!
您是从模型中还是从其他地方初始化 Backbone 视图?
我试图找出组织模型/视图的最佳方式。让您的模型初始化视图是否有意义?
感谢您提供任何信息!
不,您的模型不会初始化任何其他 MVVM 对象。
确保他们只负责定义他们将携带的数据,以及他们将如何持久化这些数据。
var CoolModel = Backbone.Model.extend({
defaults: function() {
return {
coolness: 'extreme',
color: 'red'
};
}
};
var myModel = new CoolModel;
您的视图应包含一个初始化函数,该函数将由 Backbone.View “父级”自动调用:
var CoolView = Backbone.View.extend({
doSomething: function() { ... },
doSomethingElse: function() { ... },
initialize: function() {
this.listenTo(this.model, 'eventA', this.doSomething);
this.listenTo(this.model, 'eventB', this.doSomethingElse);
}
});
当你实际创建一个视图对象时,你传入了它将绑定到的模型。从技术上讲,这可以在您的代码中的任何地方发生(但通常在应用程序级别视图中):
renderSomething: function(todo) {
var view = new CoolView({model: myModel});
// view.render() ....
}
也就是说,您的应用程序将模型和视图结合在一起。
虽然这绝对不是一个完整和完整的答案,但我建议您通读Backbone Todos Annotated Docs。
您将看到他们所做的是监听集合上的“添加”事件,并在将新模型添加到集合时从主视图创建新模型的视图。您可以在带注释的文档中的 AppView 初始化函数中看到这一点。
This is also the way I do it for all my apps, and is what I would recommend. This approach also lets you include more logic around the new model if you need to (such as re-rendering a stats view which keeps track of the number of models in the collection).