放置助手文件的正确方法是什么,以及它们应该从解析器从addon 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
时,我得到以下输出:
✘错误:断言失败:名为' displayHelper'不可能 结果
解析器找到这个帮助器的唯一方法是添加一个导入,该导入在使用它的组件中引用帮助器,如下所示:
import displayHelper from '../helpers/display-helper';
这似乎不正确,我原以为解析器会自动找到这个?
即使我有参考,以下代码最终会出现与上述相同的错误消息:
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
,就像文档说的那样,或者无法找到帮助者。
答案 0 :(得分:3)
如果您将助手从app / helpers移动到addon / helpers,则它在您的app命名空间中不可用。要解决此问题,请添加以下文件:
// app/helpers/display-helper.js
import displayHelper from 'your-addon-name/helpers/display-helper";
export default displayHelper;
(不要按字面意思复制你的插件名,使用你的插件的名称,这也是你的插件名称空间。)
这是基于此处的说明:
http://www.ember-cli.com/#addon-components
就像那里的示例组件一样,您可以将真正的帮助程序代码放在addons / helpers / display-helper中,但是您需要将其导入并重新导出到您的应用程序,以便解析器找到它。