所以,当我想知道如何处理一个我认为在(至少)Backbone开发人员中非常常见的事情时,我会遇到这种情况。
考虑到我有这段代码:
var Book = Backbone.Model.extend();
var Books = Backbone.Collection.extend({
model : Book
});
var BookView = Backbone.View.extend({ render: function(){ return this; } });
var BooksView = Backbone.View.extend({
initialize: function(){
this.collection.on('add', this.addItem, this );
},
addItem: function(){
var book = new BookView(); //<<<<<<<<<<<<<<<<
this.$el.append( book.render().$el );
},
});
var book = new BookView({ collection: new Books() });
我如何处理new BookView
部分?
我想的一种方法是使用工厂:
function BookViewFactory() {
this.getBook = new BookView();
}
并在BookView
instantiantion上传递一个这样的实例:
var book = new BookView({ collection: new Books(), bookView : new BookViewFactory() });
然后,在addItem
方法上,我会调用this.bookView.getBook()
。
这是正确的做法吗?我还有其他一些方法吗?
谢谢!
请不要向我推荐任何依赖库(browserify,模块,AMD等),因为我正处于想要了解其工作原理的阶段。