可能是一个愚蠢的问题,但似乎无法做到这一点。我有一些动作,我想在两个控制器之间共享,所以我想在mixin中定义它们然后将它们包含在控制器中。我的语法与我在指南中看到的相符:
混入/ shared.js.coffee
Dashboard.Shared = Ember.Mixin.create
actions:
showTab: (tab) ->
//handle action here
控制器/消息/ messages_contacts_show_controller.js.coffee
Dashboard.MessagesContactsShowController = Ember.ObjectController.extend Dashboard.Shared,
加载应用后,我遇到此错误:
Uncaught Error: Assertion Failed: Expected hash or Mixin instance, got [object Undefined]
我不确定如何在控制器之前加载这个mixin,因为我的文件是分开的(参考:what is the correct way to use coffeescript with ember´s Mixins?已经尝试导入它但是仍然从coffeescript获得“保留字”错误。
import { Shared } from './mixins/shared'
和
import Shared from "./mixins/shared"
在将要在其中使用的控制器之前将mixin加载的正确方法是什么?
我正在使用Ember 1.8.1
答案 0 :(得分:1)
假设您在某个主require
脚本中App
了您的JS文件,问题很可能是" MessagesContactsShowController"之前排序"共享"。当您require
使用通配符时,文件将包含在alpha顺序中。您可以尝试将Shared
mixin移至其他文件夹,然后更改require
语句的顺序,以便在MessagesContactsShowController