我对Backbone.js比较陌生.我正在初始化一个集合视图并在创建时传入一个集合.
suggestionsView = new TreeCategoriesAutoSuggest.Views.Suggestions({ collection: new App.Collections.Suggestions(this.getSuggestions(query)) });
然后我渲染集合视图.每次用户在文本框中输入查询时,都会重新生成集合并使用以下内容将其分配给集合视图:
suggestionsView.collection.set(this.getSuggestions(query));
这样可以处理集合中模型的添加/删除,但如何管理添加/删除模型的视图添加/删除?
我应该提一下,我在集合视图中使用了this.collection.on("add")侦听器.但是这会被添加到每个模型中.我也在单个视图中尝试过this.model.on("更改"),但是当从集合中添加/删除模型时,不会触发此操作.
任何帮助/指导赞赏!
更新
我现在正在使用:
suggestionsView.collection.reset(this.getSuggestions(query));
当重置事件被触发时,我正在删除建议子视图,为新集合重新初始化它们并重新呈现集合视图.
handleReset: function(){ console.log("reset"); this.cleanupOldViews(); this.initViews(); }, initViews: function(){ this.collection.each(function(suggestion){ this.suggestionViews.push(new TreeCategoriesAutoSuggest.Views.Suggestion({ model: suggestion })); },this); }, cleanupOldViews: function(){ _.each(this.suggestionViews,function(suggestionView){ suggestionView.remove() },this); this.suggestionViews = []; }
所以你认为我不需要担心破坏模型?