我是骨干的新手,似乎无法找到任何类似的线程来帮我解决这个问题。
我的问题很简单 - 我想获取一个集合的JSON文件,然后从我的视图中访问这些模型。我似乎能够获取JSON数据,但我不知道如何从我的视图中访问集合中的那些模型。
我玩过在由click事件触发的视图中使用fetch(参见下图),但它似乎不是我应该使用它的方式,因为我需要每次都点击fetch然后我不使用下划线操纵模型的方法。
我正在使用coffeescript,所以如果人们想在普通的js中看到这个,我道歉
感谢任何方向。
示例JSON:
[
{
"name": "mouse",
"level": "1"
},
{
"name": "bird",
"level": "1"
},
{
"name": "unicorn",
"level": "2"
},
{
"name": "narwhal",
"level": "2"
}
]
模特:
class MagnetModel extends Backbone.Model
magnet_model = new MagnetModel
COLLECTION:
class MagnetCollection extends Backbone.Collection
model: MagnetModel
url: "js/json/dolch.json"
magnet_collection = new MagnetCollection
magnet_collection.fetch
success: (response) ->
log response.toJSON() # I can see the data here - but now what? Where does it "live" or where do I tell it to live?
“工作”视图: 我可以在这样的视图中显示数据,但不要以为我应该这样做,因为我每次都需要“获取”:
loadLevel: (level) ->
level = $(level.currentTarget).attr('id')
words = magnet_collection.fetch
success: (response) ->
log 'good fetch'
data = response.toJSON()
console.log( data[0][level] )
error: ->
log 'bad fetch'
答案 0 :(得分:0)
您可以在没有toJSON()
电话的情况下访问模型。
这将从集合中获得第一个模型:
var model = response.at(0);
您还可以按集合搜索:
var model = response.findWhere({ name: "mouse" });
最好使用id
代替name
,并将其与方法get
一起使用
var model = response.get("id");
要获得所需的级别,还需要在模型上使用get
方法
var level = model.get("level");