Ember-cli插件和助手

时间:2015-04-04 09:13:32

标签: ember.js ember-cli

放置助手文件的正确方法是什么,以及它们应该从解析器从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,就像文档说的那样,或者无法找到帮助者。

1 个答案:

答案 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中,但是您需要将其导入并重新导出到您的应用程序,以便解析器找到它。