Backbonejs - 如何打印获取结果?

时间:2014-01-14 03:28:28

标签: javascript json backbone.js dto

嗨,我是Backbone的新手,我只是玩了一下,这是我的代码:

    var Users = Backbone.Collection.extend ({
        url : 'http://backbonejs-beginner.herokuapp.com/users'
    });

    var users = new Users();
    users.fetch({
        success: function () {
            console.log(users);
        }
    });

提取调用成功,我返回的对象如下:

[
  {
    "id": "hqel839m1071rbggsxf7",
    "firstname": "Thomas",
    "lastname": "Davis",
    "age": 12
  }
]

如何打印结果的不同部分? 例如,我想打印第一个项目的“id”参数。我可以像数组一样迭代它吗?

我尝试console.log(users[0].id),但它不起作用。

感谢。

2 个答案:

答案 0 :(得分:3)

Backbone.Collection中访问模型有三种不同的方法。首先,您可以使用.get方法根据其唯一ID查找模型。这基本上会查看集合中的所有模型,并将它们的id属性与提供的属性进行比较。

var user = collection.get('unique_id'); // return an instance, or null

第二种方法是使用.at方法通过索引获取模型。如果您的模型已排序,这将非常有用。如果它们没有排序,它们将按插入顺序(即它们提供给集合的顺序)获取:

var user = collection.at(0); // return the first model in the collection

最后,您可以访问Collection包装的原始模型数组。您可以通过.models属性访问它,该属性只是一个数组。这不是推荐的方法。

var user = collection.models[0];

拥有用户后,您可以通过模型上的.get方法访问用户的所有属性:

var age = user.get("age");
user.set("age", 100);

您可以查看模型get方法here的文档以及Backbone.Collection here的文档。

答案 1 :(得分:3)

不要忘记arguments传递给success的{​​{1}}回调collection.fetch (collection, response, options)。检查文档here。您可以使用collection参数来选择特定的model。检查以下代码:

var Users = Backbone.Collection.extend ({
    url : 'http://backbonejs-beginner.herokuapp.com/users'
});

var users = new Users();
users.fetch({
    success: function (collection, response, options) {
        //Will log JSON objects of all User objects
        console.log(collection.toJSON());
        //You can get a Model using 'id'
        var user = collection.get("hqesig1ea1br2k6horay");
        // Will log User Model for id "hqesig1ea1br2k6horay"
        console.log(user);
        //You can then fetch Model attributes this way
        console.log("ID: ", user.get('id'));
        console.log("First name: ", user.get('firstname'));
        console.log("Lastname : ", user.get('lastname'));
    }
});

fiddle供您参考。