Ember Mixin在控制器中未定义

时间:2015-07-07 00:00:25

标签: ember.js coffeescript mixins

可能是一个愚蠢的问题,但似乎无法做到这一点。我有一些动作,我想在两个控制器之间共享,所以我想在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

1 个答案:

答案 0 :(得分:1)

假设您在某个主require脚本中App了您的JS文件,问题很可能是" MessagesContactsShowController"之前排序"共享"。当您require使用通配符时,文件将包含在alpha顺序中。您可以尝试将Shared mixin移至其他文件夹,然后更改require语句的顺序,以便在MessagesContactsShowController

之前对其进行处理