2

私の英語で申し訳ありませんが、

ミックスインでビューを拡張しようとしています。コードは coffeescript です:

ビュー-films_film_view.js.coffee

App.FilmsFilmView = Em.View.extend App.ModalViewMixin,

  templateName: 'films/show'

ミックスイン - modal_view_mixin.js.coffee

App.ModalViewMixin = Em.Mixin.create

  modalView: null

  click: ->
    @showModalView()

  close: ->
    @closeModalView()


  closeModalView: ->
    if @modalView
      @modalView.close()


  showModalView: ->
    @closeModalView()
    @modalView = @createModalView()
    if @modalView
      @modalView.append()

アプリをロードしようとすると、アプリは次のエラーをスローします。

Assertion failed: Expected hash or Mixin instance, got [object Undefined] 

それで、これを書く正しい方法は何ですか?

前もって感謝します

アップデート:

で解決:

App.ModalViewMixin = Em.Mixin.create

  modalView: null

  click: ->
    @showModalView()

  close: ->
    @closeModalView()


  closeModalView: ->
    if @modalView
      @modalView.close()


  showModalView: ->
    @closeModalView()
    @set modalView, @createModalView()
    if @modalView
      @modalView.append()



App.FilmsFilmView = Em.View.extend App.ModalViewMixin,

  templateName: "films/show"

アプリが「FilmsFilmView」をロードしたときに、ミックスインがまだ初期化されておらず、エラーが発生しているようです。

4

1 に答える 1