【发布时间】:2017-11-20 12:45:05
【问题描述】:
如果我创建了一个助手,那么就可以直接在 HBS 文件中使用它。 但是我可以在控制器或组件的 JS 文件中使用它吗?
【问题讨论】:
标签: javascript ember.js helpers
如果我创建了一个助手,那么就可以直接在 HBS 文件中使用它。 但是我可以在控制器或组件的 JS 文件中使用它吗?
【问题讨论】:
标签: javascript ember.js helpers
是的。你可以。假设你有 format-css 助手,那么你可以像这样导入它
import { formatCss } from 'app-name/helpers/format-css'; 可以在 js 文件中使用它formatCss(['argument1'])
【讨论】:
import svgJar from 'your-app-name/helpers/svg-jar'; 然后 L.divIcon({ html: `<div> ${ svgJar.compute(["name-of-svg"], { class: "custom-icon-svg" }).string } </div>` });
在 Ember 1.x 中,代替:
export default Ember.Handlebars.makeBoundHelper(function(someArg){
//do something
});
使用命名导出单独导出函数:
//app_name/helpers/some-helper.js
export function someFn(someArg) {
//do something
}
export default Ember.Handlebars.makeBoundHelper(someFn);
这样,帮助器被正确定义为在模板中使用,但是在任何 js 文件中,您导入命名的帮助器函数(不是默认导出):
import { someFn } from 'app_name/helpers/some-helper';
someFn()
在 2.16 中,从您看到的文档中他们推荐这样的导出(使用不同的机制来创建帮助器):
import { helper } from "@ember/component/helper"
export function formatCurrency([value, ...rest]) {
let dollars = Math.floor(value / 100);
let cents = value % 100;
let sign = '$';
if (cents.toString().length === 1) { cents = '0' + cents; }
return `${sign}${dollars}.${cents}`;
}
export default helper(formatCurrency);
【讨论】: