【发布时间】:2015-09-24 07:06:27
【问题描述】:
可能是一个愚蠢的问题,但似乎无法正确解决这个问题。我想在两个控制器之间共享一些操作,所以我想在 mixin 中定义它们,然后将它们包含在控制器中。我的语法与我在指南中看到的一致:
mixins/shared.js.coffee
Dashboard.Shared = Ember.Mixin.create
actions:
showTab: (tab) ->
//handle action here
controllers/messages/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
【问题讨论】:
-
App.Shared是错字吗? -
您在对
Ember.ObjectController.extend的调用中指定Dashboard.Shared,而您在定义App.Shared。所以Dashboard.Shared是未定义的,这是 Ember 试图尽可能清楚地告诉你的。 -
@Kingpin2k 正确。 Dashboard 是整个应用程序使用的命名空间。
-
@Kingpin2k(我只是在我的 S.O. 帖子中打错了它......它是 Dashboard.Shared 在代码中)
标签: ember.js coffeescript mixins