更新点击事件的骨干模型并在更改位置之前等待响应

时间:2013-11-06 18:34:00

标签: javascript backbone.js javascript-events

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

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

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

1 个答案:

答案 0 :(得分:1)

来自fine manual

  

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

所以你可以等待服务器说完:

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

当然save仍然是一个AJAX调用,所以你的“有趣的东西”将在以后发生。你可以强迫save同步,但这对你的用户来说是一件坏事,所以我不会告诉你如何。