我得到了一个" 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]);
});
最重要的是,当全局属性发生变化时,如何重新计算我的助手?
答案 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'),
});