backbone.js - 当模型从集合中移除时,Marionette CollectionView 会重新渲染

标签 backbone.js marionette

我发现了我的问题,但我想知道为什么,以便我可以(希望)更好地理解 Marionette/backbone。

问题下面的代码确实会在删除项目时更新 View :

var MainView = Marionette.ItemView.extend({
    template: "#sample-template",
    events :{
        "click #remove" : "remove"
    },
    remove: function(){            
        this.trigger("property:remove", this.model);
    }
});
var CollectionView = Marionette.CollectionView.extend({
    itemView: MainView,
    initialize: function(){
        this.on("itemview:property:remove", function(view, model){
            alert(this.collection.length);
            this.collection.remove(model);
            alert(this.collection.length);
        });
    }
});

A JsFiddle to view in all its glory

修复下面的代码确实按预期更新了 View :

var MainView = Marionette.ItemView.extend({
    template: "#sample-template",
    triggers :{
        "click #remove" : "property:remove"
    },
});

var CollectionView = Marionette.CollectionView.extend({
    itemView: MainView,
    initialize: function(){
        this.on("itemview:property:remove", function(view, model){
            alert(this.collection.length);
            this.collection.remove(view.model);
            alert(this.collection.length);
        });
    }
});

The jsFiddle

最佳答案

Backbone.View 定义了一个名为 remove 的方法,用于从 DOM 中移除 View 。您的第一个示例覆盖了该方法。

如果您将 remove 重命名为 removeIt 之类的名称,则名称冲突将消失,代码按预期工作。无论如何,我认为第二种方法更适合这种情况。

关于backbone.js - 当模型从集合中移除时,Marionette CollectionView 会重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699057/

相关文章:

javascript - Backbone.js 或其他 MVC 提供什么?

javascript - 从 Node_Modules(带有 TypeScript 的 .Net Core 项目) bundle/复制 Javascript 库

backbone.js - 如何访问 Backbone View 中的父元素?

backbone.js - 从 Marionette 中的 CompositeView 获取最后一个项目 View

marionette - 无法让 Marionette 与 Browserify 一起工作

javascript - 排序后 Backbone 集合不刷新

javascript - 在主干js View 中调用oneview到另一个 View 没有出现

javascript - 主干集合在获取后有空模型

javascript - 渲染 Marionette CollectionView 时如何删除每个 childView 之间的换行符?

python - 如果没有 Marionette,Geckodriver/Firefox 如何工作? (针对 FF 53 运行 python selenium 3)