2014-01-05 1 views
0

Я пытаюсь получить модель, потому что мне нужно получить доступ к определенным атрибутам, но я не могу. Я внутри представления, которое расширяет еще один. Это, как вид выглядит следующим образом:Backbone.js: Почему я не могу получить модель в этом случае?

var ImageGridControlView = GridControlView.extend({ 
//.... stuff .... 
alert(this.model.get('property')) //This gives me an error in console and nothing is alerted. 
}); 

В классе, что приведенный выше код распространяется, модель может быть получена, например:

var GridControlView = ControlView.extend({ 
//.... stuff .... 
alert(this.model.get('property')) //This shows the property value correctly 
}); 

Почему не может модель быть извлечена из ImageGridControlView ? Какова постоянство моделей разных классов, детей и т. Д.? Я новичок в Backbone, и официальная документация только поверхностно охватывает модели.

+0

Я не уверен, но вы пробовали использовать _.bindAll()? –

ответ

1

Ваши фрагменты слишком малы, чтобы найти проблему, поэтому нам нужно только догадываться. Наиболее вероятные кандидаты являются:

  • вы обращаетесь к this.model внутри функции, вызванное событием связывания, не должным образом связан, поэтому this не на самом деле ваш экземпляр вида. Вместо этого он может быть исходным элементом DOM объекта window.
  • Вы не передавая model свойства в параметрах объекта при условии конструктору отображение вида
+0

спасибо ... Откуда я могу узнать, что такое модель? Любой способ проверить это? Любой объект, который я могу вызвать, что-то для входа в консоль? – luqita

+0

Модель не автоматическая. Вы должны передать его конструктору вида в объекте options. Вы можете сделать 'console.log (this.model)', но это будет 'undefined', потому что вы не определили его. Вы еще не опубликовали полезный фрагмент. Сделай это. –

+0

Я бы с удовольствием, но это большая система, и я не знаю, какие «фрагменты» для публикации. Есть сотни файлов, многие из которых звонят, расширяются и встраиваются друг в друга. – luqita