为我的英语道歉,
我正在尝试使用mixin扩展View。代码是coffeescript:
App.FilmsFilmView = Em.View.extend App.ModalViewMixin,
templateName: 'films/show'
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”时,mixin仍未初始化并导致错误。
答案 0 :(得分:2)
这种情况发生在运行时:
App.FilmsFilmView = Em.View.extend(App.ModalViewMixin, ...
App.ModalViewMixin
未定义,必须在使用之前定义。
确保App.ModalViewMixin
之前出现App.FilmsFilmView
。