Backbone:如何在集合更改时更新集合视图?

 jingjing20111201 发布于 2023-02-11 16:50

我对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 = [];
}

所以你认为我不需要担心破坏模型?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有