2015-04-04 49 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