Ember 1.13 - 全局变量更改时重新计算助手

时间:2015-07-28 19:04:40

标签: ember.js

我得到了一个" get-text"帮助器根据配置变量转换我的静态字段:ENV.LOCALE。

问题是,如果我的ENV.LOCALE被修改,我想重新计算一下。我尝试了几件事情,从发送事件到Ember.observer,没有太大的成功。

// controllers/application.js
locale: function() {
    var locale = this.get('isFrench') === true ? 'fr' : 'en';
    ENV.LOCALE = locale;

    return locale;
}.property('isFrench'),    


//helpers/get-text.js
import Ember from 'ember';
import ENV from '../config/environment';

export default Ember.Helper ( function(key, locale) {
    var lang = {
        save: {
            'fr': 'Enregistrer',
            'en': 'Save',
        },
    }
    return new Ember.Handlebars.SafeString(lang[key][ENV.LOCALE]);
});

最重要的是,当全局属性发生变化时,如何重新计算我的助手?

1 个答案:

答案 0 :(得分:1)

挖掘文件后I found this chapter about dependency injection。结合the API documentation on Ember.Helper我提出了以下解决方案:

第一次我创建了一个服务" locale-manager"

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

然后我将我的服务注入我的帮助程序,并在每次更改语言环境的属性时重新计算它。

// services/locale-manager.js
import Ember from 'ember';

export default Ember.Service.extend({
    isFrench: true,
    locale: function() {
        var locale = this.get('isFrench') === true ? 'fr' : 'en';
        return locale;
    }.property('isFrench'),    
});