【问题标题】:Fetched JSON is not populated in Backbone Model获取的 JSON 未填充到主干模型中
【发布时间】:2013-02-10 10:14:13
【问题描述】:

我正在使用这样的模型:

var SidebarCategory = Backbone.Model.extend({
    urlRoot: 'sidebar',
    defaults : {
        title  : '',
        items: ''
    }
});

并通过 GET 获取此 JSON:

{"id":"foo","title":"TITLE","items":"bar baz"}

但模型本身并不接受传入的数据。

var foo = new SidebarCategory({id: 'foo'});
foo.fetch();

console.log(foo.toJSON());

只取id而忽略其余部分。

我错过了什么吗? 可能是什么问题?

【问题讨论】:

  • 尝试使用 chrome 工具或 firebug。两者都有一个网络选项卡,您可以在其中找到实际的 ajax 请求。然后,您可以查看请求是否正确以及响应是否正确。如果两者都正确,则初始化存在一些问题。如果请求错误,你可以调查这个,如果响应不好,你可以调查服务器端。但你需要先区分。
  • 上面提到的Json是通过GET返回的。

标签: javascript jquery json backbone.js underscore.js


【解决方案1】:

正如@CD 指出的那样,fetch 是异步的,因此您有 2 个选项可以像这样进行回调:

foo.fetch({
success : function(data){
   console.log(JSON.stringify(data));
}
});

foo.fetch();

foo.on('reset',function(data){
  console.log(JSON.stringify(data));
},this);

您可以使用上述任何一种来处理异步调用。

【讨论】:

    【解决方案2】:

    fetch 执行异步 HTTP (Ajax) 请求,因此您应该向 fetch 传递成功回调:

    foo.fetch({
       success: function(){
           console.log(foo.toJSON());  
       }
    });
    

    【讨论】:

    • 好吧,我想我需要一些咖啡。对 - AJAX 是在 console.log 之后完成的......这对我来说很愚蠢。
    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多