首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“帮助”、“RegisterHelper”和“注册边界助手”的区别?

“帮助”、“RegisterHelper”和“注册边界助手”的区别?
EN

Stack Overflow用户
提问于 2014-04-25 07:33:44
回答 2查看 2.3K关注 0票数 4

正如标题所示,我正在寻找使用Ember.js使用上述助手创建函数的不同之处。

  1. 助手(来自Ember.js API文档): 助手(名称、功能、dependentKeys) 注册绑定助手或自定义视图助手。

示例:

Ember.Handlebars.helper(‘大写_h’,函数(值){返回value.toUpperCase();});

  1. RegisterHelper (来自Handlebars.js): 示例: Handlebars.registerHelper(‘大写_rh’,函数(值){返回value.toUpperCase();});
  2. RegisterBoundHelper (来自Ember.js API文档): 示例: Ember.Handlebars.registerBoundHelper('capitalize_rbh',函数(值){返回value.toUpperCase();};

通过使用3,我发现:

  1. 成员的助手(helper & registerBoundHelper)也可以处理模型的属性, 例如, 假设该模型的属性名为“VAGEESH”,那么以下内容将提供相同的结果,即“VAGEESH”: {{ capitalize_h名称}} 和 {{ capitalzie_rbh名称}}
  2. 但是,车把“注册帮手”不会以上述方式工作,也就是说,结果将是“名称”: {{ capitalize_rh名称}}

那么,在使用上还有其他区别吗?这是唯一的区别吗?

另外,在什么情况下建议使用哪种创建助手的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-25 09:28:08

Ember.Handlebars.helper和Ember.Handlebars.registerBoundHelper扩展了registerHelper工具栏方法,并提供了特定于EmberJS的特性,例如数据绑定或视图创建。

registerBoundHelper创建一个绑定助手。

代码语言:javascript
复制
Bound helpers behave similarly to regular handlebars helpers, with the added ability to re-render when the underlying data changes.

成员使用Ember.Handlebars (我认为,不建议您直接访问工具栏实例)提供工具栏实例,它允许您使用函数参数接受该格式的registerHelper方法编写特定的工具栏方法:

代码语言:javascript
复制
Ember.Handlebars.helper('myHelperName', function(property, options) {

});

如果您使用registerHelper方法定义了您的助手,那么您的助手将负责观察数据更改,并在必要时重新呈现其数据。

票数 2
EN

Stack Overflow用户

发布于 2014-07-01 12:53:22

如果基础数据发生变化,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”与“Registerer1244 helper”视为相同的:

代码语言:javascript
复制
Ember.Handlebars.helper('capitalize_h', function(value) {
  return value.toUpperCase();
});

...is和.

代码语言:javascript
复制
Ember.Handlebars.registerBoundHelper('capitalize_h', function(value) {
  return value.toUpperCase();
});  
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23286873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档