在单击事件时更新主干模型,并在更改位置之前等待响应

Update backbone model on click event and wait for response before changing location

本文关键字:位置 响应 等待 事件 单击 更新 模型      更新时间:2023-09-26

我想在用户单击链接时更新主干模型。我目前拥有的代码是:

$('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;
    }
});

但是,在 url 更改之前,不会更新数据库。如果我添加警报,它可以工作。在模型保存完成之前防止位置更改的最佳方法是什么?

来自精细手册:

保存model.save([attributes], [options])
[...]
save 接受 options 哈希中的successerror回调,这些回调分别作为参数传递(model, response, options)(model, xhr, options)

因此,您可以通过说以下内容来等待服务器完成:

click.save(null, {
    success: function(model) {
        // Do something interesting.
    }
});

当然save仍然是 AJAX 调用,所以你的"有趣的事情"稍后会发生。您可以强制save同步,但这对用户来说是一件邪恶的事情,所以我不会向您展示如何。