使用mixin和Ember-cli?

ken*_*ken 11 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
}
Run Code Online (Sandbox Code Playgroud)

当我保存它时,这会失败,抱怨

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

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

qx3*_*qx3 28

您可以前往并检查房产,而不是在您的进口中添加../(甚至更糟../../../).假设前缀是.config/environment.jsmodulePrefixapp-client

然后,您可以import UIListen from 'app-client/mixins/ui-listener';改为使用导入.如果您处于"深层"子路由中,绝对效果最佳等.


say*_*gun 15

我不知道你如何导出你的mixin但这应该工作:

mixins/ui-listener.js:

import Ember from 'ember';

export default Ember.Mixin.create({
 //some stuff
});
Run Code Online (Sandbox Code Playgroud)

components/my-component.js:

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

export default Ember.Component.extend(UIListenerMixin, {
 // some stuff
});
Run Code Online (Sandbox Code Playgroud)

  • 不是使用Ember.Mixin.create(...)而不是.extend(...)创建的mixins? (3认同)