0

我正在尝试什么

在保存或删除我的表单时,会向用户弹出一个简单的通知

我做了什么

events :{
    '#save-button click' : 'onSaveBUttonClick',
    '#delete-button click' : 'onDeleteButtonClick'
};

onDeleteButtonClick = function(){

    //popup appears to confirm delete
    this.model.on('sync',function(model){ 
        model.off('sync');
        alert("project deleted"); 
    },this);
    this.model.destroy();
}

onSaveBUttonClick = function(){

    //popup appears to confirm delete
    this.model.on('sync',function(){ 
        model.off('sync');
        alert("project Saved"); 
    },this);
    this.model.save(); 
}

问题

我单击删除按钮并说,选择,取消。这里model.on('sync')是绑定到模型的。

现在,当我单击 save 并确认时,将model.on('sync')调用两次(一次由删除按钮绑定,一次由保存按钮绑定)。

所以我首先删除了 2 个弹出窗口项目,然后保存了项目。

我怎样才能避免这种情况?

4

1 回答 1

2

您可以使用成功选项model.savemodel.destroy

destroy model.destroy([options])
通过将 HTTP DELETE 请求委托给 Backbone.sync 来销毁服务器上的模型。返回一个 jqXHR 对象,如果模型是新的,则返回 false。接受选项哈希中的成功和错误回调。

save model.save([attributes], [options])
[...]
save 接受选项哈希中的成功和错误回调。

你的方法可能看起来像

onDeleteButtonClick = function(){
    this.model.destroy({
        success: function() {
            alert("project deleted"); 
        }
    });
}

onSaveBUttonClick = function(){
    this.model.save(null, {
        success: function() {
            alert("project saved"); 
        }
    }); 
}
于 2013-01-15T10:52:17.077 回答