Ember.js 2.x:从另一个帮手那里召唤一个帮手

时间:2016-03-14 16:29:53

标签: javascript ember.js

我试图通过我的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'的引用。为清楚起见。

1 个答案:

答案 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});
    }
});

所以基本上,包括你需要的帮助器,然后扩展它,并覆盖计算方法。