Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 从集合中删除模型时,木偶集合视图将重新渲染_Backbone.js_Marionette - Fatal编程技术网

Backbone.js 从集合中删除模型时,木偶集合视图将重新渲染

Backbone.js 从集合中删除模型时,木偶集合视图将重新渲染,backbone.js,marionette,Backbone.js,Marionette,我解决了我的问题,但我想知道为什么,这样我(希望)可以更好地理解木偶/脊梁 问题删除项目时,以下代码会更新视图: var MainView = Marionette.ItemView.extend({ template: "#sample-template", events :{ "click #remove" : "remove" }, remove: function(){ this.trigger("p

我解决了我的问题,但我想知道为什么,这样我(希望)可以更好地理解木偶/脊梁

问题删除项目时,以下代码会更新视图:

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);
        });
    }
});

修复程序下面的代码会按预期更新视图:

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);
        });
    }
});

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


如果将
remove
重命名为类似
removeIt
的名称,名称冲突将消失,代码将按预期工作。不管怎样,我认为第二种方法更适合这种情况。

对于任何遇到这种情况的人,请记住,木偶2.x将itemview更改为childview。把我绊倒了一点。干杯

就是这样。我喜欢那些愚蠢的事情把你搞得一团糟。是的,第二个选择是更干净。谢谢