骨干“成功”回调与模型“改变”事件绑定目的

时间:2012-06-06 17:44:40

标签: backbone.js

获取模型数据时“成功”回调的目的与绑定到“更改”事件的方法的目的有什么关系?

“成功”回调

this.model.fetch({
  url: '...'.

  success: function(response) {
    ...
  }
});

VS。模型“改变”约束

this.model.bind("change", this.attributesChanged);

3 个答案:

答案 0 :(得分:7)

通常我在模型本身之外调用fetch并希望在模型中触发额外的成功函数回调的情况下使用fetch-success回调。

另外在注意事项上,请注意CRUD事件,因为“更改”事件即使在存储到服务器失败时仍可能触发,请记住模型更改时触发“更改”。从版本0.9.0开始,添加了“同步”事件来解决此问题。只要模型的状态已成功与服务器同步,就会触发此操作。

答案 1 :(得分:2)

对此问题使用“成功”或“错误”的主要原因是基于响应执行功能,因为“更改”仅在成功更改模型时触发。如果您的提取由于某种原因失败,则“更改”将不会触发。回调允许您进行更精细的控制。也就是说,它可以归结为个人偏好,以便何时您想要回应响应。我的想法是,如果我只对做一些成功的CRUD操作感兴趣,那么听“改变”是完全合适的,因为我会忽略错误。

答案 2 :(得分:0)

如果通过任何方法更新模型,则会触发'change'事件,例如用户输入到用于更改模型属性的表单或从服务器获取数据。

fetch上的成功回调显然只有在从服务器获取后才会被调用。

因此,如果您只想响应由提取引起的模型更改,而不是“双向”更改,请使用成功处理程序而不是更改事件。