0

モデルに、優先度が 100 の場合に true を返す単純な関数があります。

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を使用しています

4

1 に答える 1

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) インスタンス化時にモデル インスタンスを引数としてビューに渡す

pubModel = new App.Models.Publication(/*...*/)
pubShow = new App.Views.PublicationShow(model: pubModel)
于 2013-04-15T02:13:45.543 に答える