骨干模型设定值不会发生变化事件

时间:2013-06-25 06:42:16

标签: javascript backbone.js

我有这个集合的集合和表格视图。

App.Views.TableContainer = Backbone.View.extend({
    el: '#some-table,

    clearTable: function(){
        this.collection.each(function(person){
            person.set('deleteMe', 1);
        });
    }    
});

表格中每一行的视图:

App.Views.PersonRow = App.Views.BaseViewTemplate.extend({
    template: template("person-row-template"),
    tagName: 'tr',

    events: {
        'click' : 'removeFromTable'
    },

    initialize: function(){
        this.model.on('change', this.removeRow(), this);
    },

    removeRow: function(){
        console.log('removing');
        console.log(this.model.toJSON());
        if(this.model.get('deleteMe') == 1){
            this.$el.remove();
            App.publisherTableContainer.removeFromContainer(this.model);
        }

    },

    removeFromTable: function(e){
        var me = this;
        this.$el.fadeOut(300);
        App.personTableContainer.removeFromContainer(this.model);

    }
});

执行TableContainer的clearTable时,PersonRow的函数removeRow没有执行(遗憾)

有什么想法吗?

谢谢! 罗伊

1 个答案:

答案 0 :(得分:3)

错误是:(这是常见的,也可能是您的更改功能不起作用的原因)

this.model.on('change', this.removeRow(), this);

应该是:

this.model.on('change', this.removeRow, this);

on函数的第二个参数应该是一个回调函数。现在你发送removeRow返回的任何内容。如果函数实际上返回一个回调函数,这将有效,但我想这不是在这种情况下:)