10

我无法赶上对普通 Handlebars 和修改后的 Ember Handlebars 助手所做的所有更改。如果我没记错的话,您可以使用以下方法注册一个助手

  • Ember.Handlebars.helper
  • Ember.Handlebars.registerHelper
  • Ember.Handlebars.registerBoundHelper
  • Handlebars.registerHelper

这对我来说太多了。你能具体解释一下有什么区别吗?

4

2 回答 2

12

Ember.Handlebars.registerHelper是一个不将参数字符串绑定到属性的基本助手。例如,考虑一个使用它hello创建的助手registerHelper,它只返回一条问候消息。

Ember.Handlebars.registerHelper('hello', function(name) {
  return 'Hello ' + name;
});

当您在模板中使用它时,

{{hello name}}

你会得到显示文本,Hello name查找该name属性的值。

要将name属性的值放入您需要的助手中,registerBoundHelper. 顾名思义,它创建了与name属性之间的绑定。任何时候,name都会再次调用助手进行更改以重新渲染。实现方式类似,

Ember.Handlebars.registerBoundHelper('hello', function(name) {
  return 'Hello ' + name;
});

这与一些额外的检查Ember.Handlebars.helper相同,registerBoundHelper以自动检测您想要什么样的助手。

香草Handlebars.registerHelper不在 Ember 中使用。它会为不使用 Ember 的项目创建类似的助手。

于 2013-08-02T08:42:51.547 回答
1
  • Ember.Handlebars.helper应该用于注册助手,其他方法只是它的有限版本。Ember.Handlebars.helper使用使视图和模型保持同步的绑定呈现 HTML。函数、视图和组件可以作为帮助定义提供。

  • Ember.Handlebars.registerBoundHelper就像Ember.Handlebars.helper,但您只能提供一个 Function 作为辅助定义。

  • Ember.Handlebars.registerHelper以前委托给Handlebars.registerHelper. Ember.Handlebars.registerHelper不再存在,但在设置绑定后Handlebars.registerHelper仍然在内部用于创建所有帮助程序。Ember

于 2014-11-01T22:20:51.363 回答