Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js模型:覆盖自定义API的解析_Backbone.js - Fatal编程技术网

Backbone.js模型:覆盖自定义API的解析

Backbone.js模型:覆盖自定义API的解析,backbone.js,Backbone.js,在Backbone.js中,我正在使用一个API,它将响应封装在元数据散列中。例如: # GET /api/posts/1 meta: { status: 200 }, data: { id: 1 title: 'Hello World' } # GET /api/posts meta: { status: 200 }, data: [ { id: 1 title: 'Hello World' }, { id: 2 title: '

在Backbone.js中,我正在使用一个API,它将响应封装在元数据散列中。例如:

# GET /api/posts/1
meta: {
  status: 200
},
data: {
  id: 1
  title: 'Hello World'
}

# GET /api/posts
meta: {
  status: 200
},
data: [
  {
    id: 1
    title: 'Hello World'
  },
  { 
    id: 2
    title: 'Hi everyone!'
  }
]
My Backbone.js集合/模型覆盖了以下解析函数:

# App.Models.Post
... 
parse: function (response) {
   this.meta = response.meta;
   return response.data;
}

# App.Collections.Posts
... 
parse: function (response) {
   this.meta = response.meta;
   return response.data;
}
但是,当我在收集帖子上获取时=new App.Collections.posts;posts.fetch,post属性都为空。例如,posts.at0.get'title'=未定义

现在,当模型解析更改为:

parse: function (response) {
   return response;
}
但这意味着post.fetch已损坏。 有什么建议吗


谢谢

我认为问题在于,当通过模型获取与集合获取进行解析时,模型的解析会得到不一致的数据。将参数记录到模型解析以确认这一点。这是因为集合的解析返回的值只是一个对象数据数组,要将这些数据转换为模型,集合只需委托给模型的解析方法。这可能会解决您的问题:

//App.Models.Post
parse: function (response) {
    if (response.data) {
        return response.data;
    }
    return response;
}

供参考:

我认为问题在于,当通过模型获取与集合获取完成解析时,模型的解析将不一致的数据传递到模型中。将参数记录到模型解析以确认这一点。这是因为集合的解析返回的值只是一个对象数据数组,要将这些数据转换为模型,集合只需委托给模型的解析方法。这可能会解决您的问题:

//App.Models.Post
parse: function (response) {
    if (response.data) {
        return response.data;
    }
    return response;
}

参考:

您是否尝试过使用console.logresponse查看响应对象包含的内容?是否尝试过使用console.logresponse查看响应对象包含的内容?太棒了!我一直在想wtf会不会影响我的数据解析。谢谢。我把这篇文章和我找到的另一篇文章合并在一起了。尝试解析:函数response{if{.isObjectresponse.data{return response.data;}return response;}花了几个小时研究如何显示这个.collection.models。我将它添加到了我的集合中。太棒了!我一直在想wtf会不会影响我的数据解析。谢谢。我把这篇文章和我找到的另一篇文章合并在一起了。尝试解析:函数response{if{.isObjectresponse.data{return response.data;}return response;}花了几个小时研究如何显示这个.collection.models。我将它添加到了我的集合中。作品