2013-04-05 3 views
0

У меня есть простая функция в моей модели, которая должна возвращать истину, если приоритетом является 100Вызов функции магистральная модель с точки зрения

class App.Models.Publication extends Backbone.Model 
    urlRoot: '/api/publications' 

    isIncredible: -> 
    @get('priority') is 100 

В представлении я хочу вызвать функцию, но я не могу

class App.Views.PublicationShow extends Backbone.View 
    tagName: 'article' 
    className: 'offer' 
    template: JST['publications/show'] 

    render: => 
    if @model.isIncredible() 
     $(@el).addClass('incredible').html(@template(publication: @model)) 
    else 
     $(@el).html(@template(publication: @model)) 
    @modalEvent() 
    this 

я получаю: TypeError: this.model.isIncredible is not a function

так же, как примечание, я использую coffescript

+0

Вы дважды проверили (используя отладчик), что модель имеет правильный тип? – WiredPrairie

+0

Как вы создаете экземпляр 'App.Views.PublicationShow'? –

+0

В начале метода рендеринга просмотра войдите в консоль @model. Должно быть довольно ясно, что не так. – Loamhoof

ответ

1

Вы должны инициализировать модель в представлении либо 1) установив его в функции инициализации в представлении

class App.Views.PublicationShow extends Backbone.View 
    tagName: 'article' 
    className: 'offer' 
    template: JST['publications/show'] 

    initialize: -> 
     @model = new App.Models.Publication() 

    render: => 
    if @model.isIncredible() 
     $(@el).addClass('incredible').html(@template(publication: @model)) 
    else 
     $(@el).html(@template(publication: @model)) 
    @modalEvent() 
    this 

или 2) проходят в модели, например в качестве аргумента в виду, когда instanciating его

pubModel = new App.Models.Publication(/*...*/) 
pubShow = new App.Views.PublicationShow(model: pubModel) 
Смежные вопросы