使用mixin和Ember-cli?

时间:2014-12-09 09:49:09

标签: ember.js ember-cli

我有一个mixin app/mixins/ui-listener.js,我很难与Ember-CLI一起使用。我正在尝试使用以下语法的mixin:

import ListenerMixin from './mixins/ui-listener';
export default Ember.Component.extend(ListenerMixin,{
    // class definition
}

当我保存它时失败,抱怨

  

ENOENT,没有这样的文件或目录'tmp / tree_merger-tmp_dest_dir-74tK3rvD.tmp / [app-name] /components/mixins/ui-listener.js'

似乎很有趣,“mixins”目录嵌套在“components”目录下(因为Ember-CLI将这些目录放在同一级别),但这可能只是一个Brocoli构建步骤。无论如何,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:28)

您可以转到../并检查属性../../../,而不是在导入中添加config/environment.js(甚至更差modulePrefix)。我们假设前缀是app-client

然后,您可以使用import UIListen from 'app-client/mixins/ui-listener';进行导入。绝对最适合你,如果你在"深" subroute等。

答案 1 :(得分:15)

我不知道你如何导出你的mixin,但这应该有效:

mixins/ui-listener.js中的

import Ember from 'ember';

export default Ember.Mixin.create({
 //some stuff
});
components/my-component.js中的

import Ember from 'ember';
import UIListenerMixin from '../mixins/ui-listener';

export default Ember.Component.extend(UIListenerMixin, {
 // some stuff
});