正如标题所示,我正在寻找上述帮助器创建函数与Ember.js的使用差异。
Helper(来自Ember.js API文档):
helper(name,function,dependentKeys)
注册绑定的帮助程序或自定义视图帮助程序。
示例:
Ember.Handlebars.helper('capitalize_h', function(value) {
return value.toUpperCase();
});
RegisterHelper(From Handlebars.js):
示例:
Handlebars.registerHelper('capitalize_rh', function(value) {
return value.toUpperCase();
});
RegisterBoundHelper(来自Ember.js API文档):
示例:
Ember.Handlebars.registerBoundHelper('capitalize_rbh', function(value) {
return value.toUpperCase();
});
从使用3开始,我发现:
Ember的助手(helper& registerBoundHelper)也可以在模特的属性上工作,
例如:
假设模型的属性名称具有值' Vageesh',那么以下内容将提供相同的结果,即' VAGEESH':
{{ capitalize_h name }}
和
{{ capitalzie_rbh name }}
但是,Handlebars'注册助手'将不会以上述方式工作,即结果将是' NAME':
{{ capitalize_rh name }}
那么,使用中是否存在其他差异,或者这是唯一的区别?
另外,在什么情况下建议使用哪种助手创建方法?
答案 0 :(得分:4)
Ember.Handlebars.registerBoundHelper 将重新呈现。
当基础数据发生变化时,Ember.Handlebars.registerHelper 将不会重新呈现。
Ember.Handlebars.helper 是Ember.Handlebars.registerBoundHelper或Ember.Handlebars.registerHelper的别名,具体取决于参数中传递的内容。如果您正在尝试创建自定义视图助手,Ember.Handlebars.helper将在内部调用Ember.Handlebars.registerHelper,否则,它将调用Ember.Handlebars.registerBoundHelper。在您的示例中(大多数情况下使用案例),您可以将'helper'视为与'registerBoundHelper'相同:
Ember.Handlebars.helper('capitalize_h', function(value) {
return value.toUpperCase();
});
...与...相同
Ember.Handlebars.registerBoundHelper('capitalize_h', function(value) {
return value.toUpperCase();
});
答案 1 :(得分:2)
Ember.Handlebars.helper 和 Ember.Handlebars.registerBoundHelper 使用EmberJS特定功能扩展 registerHelper 把手方法作为数据绑定或视图创建。
registerBoundHelper 会创建一个绑定帮助器。
Bound helpers behave similarly to regular handlebars helpers, with the added ability to re-render when the underlying data changes.
Ember使用Ember.Handlebars提供Handlebars实例(我认为,不建议您直接访问Handlebars实例),它允许您使用registerHelper方法编写特定的handlebars方法,该方法的函数参数接受以下格式: / p>
Ember.Handlebars.helper('myHelperName', function(property, options) {
});
如果使用registerHelper方法定义助手,则助手将负责观察数据更改并在必要时重新呈现其数据。