我想在用户点击链接时更新主干模型。我目前的代码是:
$('a').on('click', function(){
// prevent default
event.preventDefault();
var id = $this.data('id');
// update backbone model
var click = new ClickModel({ "id": id });
var response = click.save();
// alert('testing');
if(response.status = 200)
{
return true;
}
});
但是,在更改网址之前,数据库尚未更新。如果我添加警报它可以工作。在模型保存完成之前阻止位置更改的最佳方法是什么?
答案 0 :(得分:1)
来自fine manual:
保存
model.save([attributes], [options])
[...]
保存接受success
哈希中的error
和options
回调,这些回调分别作为参数传递(model, response, options)
和(model, xhr, options)
。
所以你可以等待服务器说完:
click.save(null, {
success: function(model) {
// Do something interesting.
}
});
当然save
仍然是一个AJAX调用,所以你的“有趣的东西”将在以后发生。你可以强迫save
同步,但这对你的用户来说是一件坏事,所以我不会告诉你如何。