Доступ к атрибутам объекта javascript в Backbone.js

Tastypie предоставляет RESTful API для проектов django, поэтому я могу использовать Backbone.js. Когда я нажимаю URL-адрес, чтобы получить набор ресурсов, deliciouspie включает данные о разбиении на страницы, к которым я не могу получить доступ. У меня есть представление Backbone, в котором я инициализирую коллекцию в функции инициализации, а затем визуализирую:

MyView = Backbone.View.extend({
  ...
  initialize: function() {
     this.collection = new MyCollection;
     this.render();
  }
  ...
  render: function() {
     console.log(this.collection); // this.colllection.toJSON() returns []
     console.log(this.model);  // this.model.toJSON() returns the object
  }
});

Ссылка на следующую страницу содержится в мета-атрибуте this.collection, но я не могу получить к ней доступ. Вызов toJSON() для коллекции возвращает []. Проблема в том, что console.log(this.collection) дает следующее:

> child
_byCid: Object
_byId: Object
_callbacks: Object
length: 3
meta: Object
models: Array[3]
toJSON: function (key) {
__proto__: ctor

URL-адрес, который мне нужен, находится внутри мета-атрибута this.collection (чтобы я мог его видеть!), но я не могу получить к нему доступ. Вызов toJSON работает с моделью, но не с коллекцией. Как я могу получить доступ к атрибутам коллекции?


person Rahul Pandey    schedule 16.08.2012    source источник


Ответы (1)


Может быть так же просто, как this.collection.meta?

Обновлять

Также вы должны использовать console.log осторожно и не доверять ему, когда вы отлаживаете не простые объекты, проверьте:

В вашем коде попробуйте:

this.collection.fetch({
  success: function( collection ) { 
    console.log( "collection.meta", collection.meta ) 
  } 
});
person fguillen    schedule 16.08.2012
comment
Я надеялся на это, но это дает мне неопределенность. - person Rahul Pandey; 16.08.2012
comment
Я думаю, что ваша коллекция все еще не получена, когда вы попробуете мое решение. Попробуйте this.collection.fetch({success: function( collection ) { console.log( "collection.meta", collection.meta ) } }). Вы доверяете console.log, и вам не следует: "> stackoverflow.com/questions/11459244/ | stackoverflow.com/questions/9911637/ - person fguillen; 16.08.2012
comment
Вы совершенно правы. Внутри выборки я могу получить доступ к атрибутам. С консолью буду осторожнее. Если вы хотите добавить еще один ответ об этом, я могу принять. - person Rahul Pandey; 18.08.2012
comment
@user875700 user875700 Я только что обновил этот ответ информацией, которая, наконец, оказалась для вас полезной. - person fguillen; 18.08.2012