2015-04-04 45 views
3

放置你的帮助文件的正确方法是什么以及解决方案从插件ember-cli项目中找到它们的位置?Ember-cli插件和帮手

我正在运行余烬0.2.2。

我产生帮助从一个插件项目用:

ember g helper display-helper 

发电机放置在app/helpers这似乎我错了文件,我还以为它应该已经摆在addon帮手。我将文件移动到addon/helpers,它看起来像这样:

export default Ember.Handlebars.registerBoundHelper('displayHelper', function displayHelper(searchPath) { 
    return new Ember.Handlebars.SafeString(get(this, searchPath)); 
}); 

当我跑ember test我得到以下输出:

✘ Error: Assertion Failed: A helper named 'displayHelper' could not be found

我得到这个帮手只有这样,才能由解析器发现是添加引用帮手组件的进口正在使用它像这样:

import displayHelper from '../helpers/display-helper'; 

这似乎并不正确,我就已经想好了竟被解析d已经自动找到了这个?

另外,即使我有参考,下面的代码结束了与上述相同的错误消息:

import Ember from 'ember'; 

var get = Ember.get; 

function displayHelper(context, searchPath) { 
    return new Ember.Handlebars.SafeString(get(context, searchPath)); 
} 

export default Ember.Handlebars.makeBoundHelper(displayHelper); 

因此归结起来,我已经有在其模板使用组件这个线助手:

import displayHelper from '../helpers/display-helper'; 

而且我必须用registerBoundHelper而不是像makeBoundHelper文档说或助手无法找到。

回答

2

如果您将辅助程序从app/helpers移至addon/helpers,它不适用于您的应用程序名称空间。为了解决这个问题,添加以下文件:

// app/helpers/display-helper.js 

import displayHelper from 'your-addon-name/helpers/display-helper"; 
export default displayHelper; 

(不要逐字复制您 - 附加的名字,用你的插件,这也是你的插件的命名空间的名称)

这是基于这里说明:

http://www.ember-cli.com/#addon-components

就像例如组件存在,你可以把插件/助理/显示辅助你真正的助手代码,但是你需要导入并再次将其导出到您的应用程序为您解析找到它。

+0

我已经试过这个可悲的是,没有文件被自动加载到应用程序/文件夹中。 0.2.2似乎在很多方面都被打破了。 – dagda1 2015-04-05 15:39:42

+0

与0.2.3也有类似的问题。此外,[this](http://stackoverflow.com/questions/29506064/ember-cli-custom-input-helper)以及ember-cli [docs](http://www.ember-cli.com /#resolving-handlebars-helpers)说:“建议使用组件代替。”但我不确定为什么你需要一个组件来在Ember-CLI中定义一个帮助器?作为一个反例,请注意[本次回购](https://github.com/johnotander/ember-cli-dates)的结构,虽然它使用的是早期版本(0.2.0)。 – clekstro 2015-04-12 12:33:05

+0

嗯......我不知道为什么它不适合你们,但你可以尝试在初始化程序中手动注册你的助手,只应该在名字中没有破折号的帮助者时才需要。请参阅http://www.ember-cli.com/#resolving-handlebars-helpers上的修剪示例 – Gaurav 2015-04-12 13:22:50