在具有稀疏数组的模型上获取主干并在同一模型上重新获取

时间:2014-02-15 03:34:15

标签: jquery ajax backbone.js

collection(list)视图获取稀疏数组(不是所有模型字段),并仅使用name和id构建模型集合。从

开始
collection.fetch(); //fetch requesting only partial json fields

集合提取调用集合中的每个模型的collection.parse和相应的model.parse()

一切都很好。

然后对单个模型视图执行对集合中的一个模型的重新获取。这次要求所有领域。名称,职称,描述等。

model.fetch({success: function(view) {console.log("yeah");}); //fetch requesting all json fields

后端休息服务器显示请求和提供的响应。

控制台显示“是的”。换句话说,模型提取是通过所有度量来实现的。但是,此时model.parse不会被调用。因此,新字段不可用。

尽管Ajax“成功”,但为什么model.parse未被调用的任何提示

此外,主干done处理程序在respond.text

中显示正确的json
// Callback for when everything is done
        function done( status, nativeStatusText, responses, headers ) {
            var isSuccess, success, error, response, modified,
                statusText = nativeStatusText;

您遇到过类似的问题:使用已建立的模型ID获取,模型上的获取必须返回对象{}中的json而不是数组[{}]。等等。没有最佳实践thnx

1 个答案:

答案 0 :(得分:0)

Backbone.js源代码相对容易理解,你可以直接在Backbone中调试这样的问题。

致电model.fetch时会发生什么情况基本上如下:

  1. 保存提供的成功回调以供日后使用,并替换为新的成功回调。
  2. 使用当前模型和提供的选项调用
  3. model.sync(除了选项现在包含不同的成功回调)。
  4. model.sync最终调用成功回调。
  5. 成功回调调用model.parse(这可能是出错的地方)。
  6. model.parse的结果用于更新模型属性。
  7. 调用您原来的成功回调。
  8. 通过在model.fetch呼叫上设置断点并下降到Backbone源,您应该能够找出问题所在。在调试过程中要检查的一些事项是:

    • model.parse是您期望的功能吗?
    • model是您期望的对象吗?

    如果这没有帮助,请尝试通过删除不相关的代码来创建一个较小的代码示例,从而重现问题。通过这样做,你应该在某个时候能够弄清楚出了什么问题。

    如果这仍然不起作用,请使用您的小代码示例创建一个JSFiddle,使用http://www.mockable.io/创建一个模拟后端并再次在此处发布。