Ember Handlebars帮助者可以观察全局物体的属性吗?

时间:2013-09-09 14:24:37

标签: ember.js handlebars.js

我有一个Handlebars助手来显示i18n标签。 我希望这个助手能够观察全局对象的属性并更改标签 动态,如果该属性的值更改。我一直在尝试这样的事情但到目前为止没有运气:

  Ember.Handlebars.registerBoundHelper('t', function(key) {
    return I18n.t(key);   
  }, 'App.i18nHelper.locale');

有没有办法让我的UI动态更改所有i18n标签? 谢谢!

2 个答案:

答案 0 :(得分:3)

我通过复制Ember.Handlebars.registerBoundHelper

的部分内部来使其成功
  Ember.Handlebars.registerBoundHelper('t', function(key, options) {
    var currentContext = (options.contexts && options.contexts[0]) || this;
    var view = options.data.view;
    var bindView = view.get('_childViews.lastObject');
    view.registerObserver(currentContext, 'App.i18nHelper.locale', bindView, bindView.rerender);
    return I18n.t(key);
  });

虽然这是hacky的方式,恕我直言..

答案 1 :(得分:1)

我不认为这对助手有用。我通过在全局属性上设置观察者然后强制重新渲染Ember.View.views中的所有视图来实现此功能。我说“sorta”因为它适用于全局var的第一次更改,但是在第二次更改时视图完全空白。

http://jsbin.com/ucanam/965/edit

只需点击foo 0.xxx即可查看更改。

我很想知道为什么它在第二次运行时变得空白......

相关问题