2014-01-14 3 views
2

Привет Я новичок в Backbone, и я просто играл с ним немного, вот мой код:Backbonejs - Как распечатать результаты извлечения?

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), но это не сработает.

Спасибо.

ответ

3

Существует три способа доступа к моделям в Backbone.Collection. Во-первых, вы можете использовать метод .get, чтобы найти модель на основе ее уникального идентификатора. Это в основном рассматривает все модели в коллекции и сравнивает их атрибут 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 

Наконец, вы можете получить доступ к необработанному массиву моделей, Сборник обертывания. Вы можете получить к нему доступ через атрибут .models, который является всего лишь массивом. Это не рекомендуется.

var user = collection.models[0]; 

После того, как у вас есть пользователь, вы можете получить доступ к любым атрибутам пользователя с помощью метода .get на модели:

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

Вы можете просмотреть документацию для модели get метод here и документация для Backbone.Collectionhere.

+0

Я получаю «Uncaught TypeError: не могу вызвать метод« get »неопределенного», когда я пытаюсь выполнить console.log (users [0] .get («id»)); – zeion

+0

Извините, что я отредактировал свой ответ, я забыл о массиве моделей. То, что я связал, теперь будет работать. –

3

Не следует забывать о arguments переданного success обратного вызова 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')); 
    } 
}); 

A fiddle для справки.

Смежные вопросы