2013-01-15 53 views
0

我试图异步悖论BackboneJS

在保存或我的表格删除一个简单的通知POP操作,直至用户

我做了什么

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')绑定到模型。现在

当我点击保存,并确认,该model.on('sync')调用两次(一按删除键和一个由保存按钮约束的约束)。

所以我得到2弹出项目中删除第一和项目保存后。

我该如何避免这种情况?

回答

2

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

破坏model.destroy([选项])
通过委托HTTP DELETE请求到骨干销毁服务器上的模型。同步。返回 一个jqXHR对象,或假如果模型是否新款。在选项哈希中接受成功和错误 回调。

节省model.save([属性],[选项])
[...]
节省接受在选项散列成功和错误回调。

你的方法可能看起来像

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

onSaveBUttonClick = function(){ 
    this.model.save(null, { 
     success: function() { 
      alert("project saved"); 
     } 
    }); 
} 
+0

凉爽,非常感谢:) –