gpt4 book ai didi

javascript - 异步悖论BackboneJS

转载 作者:行者123 更新时间:2023-12-02 19:05:42 25 4
gpt4 key购买 nike

我正在尝试

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

我做了什么

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

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

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

如何避免这种情况?

最佳答案

您可以使用 model.save 中的成功选项和 model.destroy

destroy model.destroy([options])
Destroys the model on the server by delegating an HTTP DELETE request to Backbone.sync. Returns a jqXHR object, or false if the model isNew. Accepts success and error callbacks in the options hash.

save model.save([attributes], [options])
[...]
save accepts success and error callbacks in the options hash.

你的方法可能看起来像

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

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

关于javascript - 异步悖论BackboneJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14335583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com