在非ember-cli应用程序中注册Ember.Helper

时间:2015-10-12 11:10:01

标签: ember.js ember-cli

如何在不使用Ember.Helper

的情况下注册ember-cli

我有一组我想要迁移的帮助程序,但我们的应用程序尚未准备好迁移到ember-cli。

解: 使用注册表。

Ember.onLoad('Ember.Application', function(Application) {
  Application.initializer({
    name: 'registerMyHelper',
    initialize: function(registry/*, application*/) {
      registry.register('helper:my-helper', MyHelper);
    }
  });
});

1 个答案:

答案 0 :(得分:0)

http://guides.emberjs.com/v1.10.0/templates/writing-helpers/ - 将进一步详细解释:

几种方式:

  1. Ember.Handlebars.helper是注册帮助者的最佳方式。该 其他方式是它的版本。 Ember.Handlebars.helper呈现HTML 绑定和同步..你可以传递很多东西。
  2. Ember.Handlebars.registerBoundHelper就像 Ember.Handlebars.helper,但只接受函数作为参数 (因此我在实例中使用它)
  3. 以前委托的Ember.Handlebars.registerHelper Handlebars.registerHelper。 Ember.Handlebars.registerHelper不再 存在,但Handlebars.registerHelper仍在内部使用 设置绑定后,Ember将创建所有帮助程序。
  4. 简单且更复杂的助手示例:

    //Helper to translate a number to words:
    Ember.Handlebars.registerHelper("skillLevelToWords", function (levelNum) {
      if (levelNum < 3) return "Beginner";
      if (levelNum == 3 || Ember.isEmpty(levelNum)) return "Intermediate";
      if (levelNum > 3) return "Expert";
    })
    
    /**
     * Helper to itearte object properties and to print each one with value and key.
      */
    Ember.Handlebars.registerHelper('eachProperty', function(context, options) {
      var ret = "";
      var newContext = Ember.get(this, context);
      for(var prop in newContext)
      {
        if (newContext.hasOwnProperty(prop)) {
          ret = ret + options.fn({property:prop,value:newContext[prop]});
        }
      }
      return ret;
    });