我试图通过我的ember.js
应用中的其他助手调用帮助器,并且无法弄清楚如何在2.x中执行此操作。作为参考,我使用Ember 2.4和Ember-CLI。
在旧版本中,有几个答案可以解决这个问题。例如,下面的代码片段定义了一个帮助器变体,它试图运用一些魔法,然后调用Ember的内置component
帮助器......
import Ember from 'ember';
export function magicComponent(params) {
// ...
// do some magic here
// ...
return Ember.Handlebars.helpers['component'].apply(this, args); // Oops!
}
export default Ember.Helper.helper(magicComponent);
...但标有“哎呀!”的标语行!是TypeErroring,因为Ember.Handlebars.helpers
在Ember 2.x中是undefined
。韦尔普。
有没有人知道如何在最新的Ember版本中以编程方式调用帮助程序(或设置某种继承)?
[编辑]删除了对' Handlebars'的引用。为清楚起见。
答案 0 :(得分:1)
这是我所做的,将基于会话的日期格式和时区添加到ember-moment:
import Ember from 'ember';
import MomentFormat from 'ember-moment/helpers/moment-format';
export default MomentFormat.extend({
session: Ember.inject.service(),
formatChanged: observer("session.timeZone", "session.dateFormat", function() {
this.recompute();
}),
compute([date], { locale }) {
const timeZone = this.get("session.timeZone");
const format = this.get("session.dateFormat");
return this._super([date, format], {locale, timeZone});
}
});
所以基本上,包括你需要的帮助器,然后扩展它,并覆盖计算方法。