emberJS:是否可以在组件/控制器Javascript中使用帮助器?

时间:2017-11-20 12:45:06

标签: javascript ember.js helpers

如果我创建一个帮助器,那么它就可以直接在HBS文件中使用它。 但我可以在控制器或组件的JS文件中使用它吗?

2 个答案:

答案 0 :(得分:4)

是。您可以。假设你有format-css帮助器,那么你可以像导入它一样 formatCss(['argument1'])您可以在js文件create table entity ( EntityId int auto_increment primary key, Name varchar(255) not null, someInteger int not null, anotherInteger int not null, unique (name, someInteger, anotherInteger) ); create table entityValues ( entityValueId int auto_increment primary key, EntityId int, timestamp datetime, value ?, -- I don't know what the type is foreign key (EntityId) references entities(EntityId) );

中使用它

答案 1 :(得分:0)

在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);