0

当用户单击链接时,我想更新骨干模型。我现在的代码是:

$('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 更改之前,不会更新数据库。如果我添加警报,它会起作用。在模型保存完成之前防止位置更改的最佳方法是什么?

4

1 回答 1

1

来自精美手册

save model.save([attributes], [options])
[...]在哈希中
保存接受successerror回调,它们分别作为参数传递和传递。options(model, response, options)(model, xhr, options)

因此,您可以通过以下方式等待服务器完成:

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

当然save仍然是一个 AJAX 调用,所以你的“有趣的事情”会在以后发生。你可以强制save同步,但这对你的用户来说是一件坏事,所以我不会告诉你怎么做。

于 2013-11-06T19:22:40.687 回答