Arrays 从backbone.js中的json数组获取单个模型
我是个新手,所以我可能错过了一些明显的东西。但是,我搜索了stackoverflow,没有找到任何适合我的问题 我的模型只有urlRoot:Arrays 从backbone.js中的json数组获取单个模型,arrays,json,backbone.js,model,fetch,Arrays,Json,Backbone.js,Model,Fetch,我是个新手,所以我可能错过了一些明显的东西。但是,我搜索了stackoverflow,没有找到任何适合我的问题 我的模型只有urlRoot: Album = Backbone.Model.extend({ urlRoot: '/data/album.json' }); json如下所示: [{ "id": "01", "title": "title1", "artist": "artist1", "tracks": [{ "track": "track1",
Album = Backbone.Model.extend({
urlRoot: '/data/album.json'
});
json如下所示:
[{
"id": "01",
"title": "title1",
"artist": "artist1",
"tracks": [{
"track": "track1",
"url": "/music/101.mp3"
},
{
"track": "track2",
"url": "/music/102.mp3"
}]
},
{
"id": "02",
"title": "title2",
"artist": "artist2",
"tracks": [{
"track": "track1",
"url": "/music/201.mp3"
},
{
"track": "track2",
"url": "/music/202.mp3"
}]
}]
我能够获取数组中的对象:
album = new Album();
album.fetch();
album.toJSON(); --> //Object {0: Object, 1: Object}
在我的新模型上调用toJSON表明数组获取正确。如果展开每个对象,我将看到所有属性
但是,当我尝试从数组中只获取单个对象时,它不起作用
album = new Album({id: 01});
album.fetch()
album.toJSON(); --> // Object {id: 1}
我错过了什么
我建议您更改代码中的一些内容,并阅读更多关于REST-ful资源的内容和行为
在处理对象集合或所谓的资源(来自REST)时,请尝试使用
Backbone.Collection
。并向该系列提及合适的Backbone.Model
,该系列将代表您的系列中的单个项目。在您的情况下,/data/album
是资源
为了演示它,让我们将您的示例更改为以下内容(我将使用不带
json
扩展名的路由):
现在您有了Backbone.Model
s的集合,它更易于在主干方法中操作和使用。您可以使用混合下划线js
方法对其执行任何操作-过滤、排序、搜索id为的模型等等
每当您需要获取单个模型或资源的单个项时,您都需要了解Backbone.model
将如何更改路由(urlRoot)
执行此操作时:
var album = new Album({id: 1});
var album.fetch();
在您的情况下,它将触发对以下路径的请求GET'/data/album/1'
您有几个选项可以解决您的问题:
json
扩展名的路由,以及单个项目句柄路由,如/data/album/id
parse
方法添加到主干.Model
。。。。实际上,它将开始表现得像一个主干.Collection,因为任何时候你需要一个项目,你需要获取所有的东西,并在混乱中找到所需的对象因此,我建议您尝试混合使用第一和第二选项 您是否已将后端API配置为响应像
/data/album/1.json这样的路由?您是否处理了此问题?是的,这两条评论都为我指明了正确的方向。
var album = new Album({id: 1});
var album.fetch();