使用Backbone - 如何从JSON访问集合中的模型

时间:2014-01-26 15:47:25

标签: json backbone.js collections

我是骨干的新手,似乎无法找到任何类似的线程来帮我解决这个问题。

我的问题很简单 - 我想获取一个集合的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'

1 个答案:

答案 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");