如何在另一个自定义帮助程序中调用一个自定义辅助程序函数
How to call one custom helper function in another custom helper
我想在另一个助手函数中使用一个助手功能。在下面的代码中,如果姓氏包含"芬奇"这个词,我想突出显示它。我有写作助手类。如果我们在hbs文件中使用,那么语法将是{{highlight-name}}。但是如何使用它,因为我必须在另一个助手类中使用它。
以下是我的代码:
Handlebars.registerHelper('fullName', function(person) {
return person.firstName + " " + person.lastName;
});
Handlebars.registerHelper('highlight', function(person) {
var item = (person.lastName).replace('Finch', '<span style="color: red">'
+ Finch + '</span>');
return new Handlebars.SafeString(item);
});
这是工作小提琴:http://jsfiddle.net/wC6JT/4/
这是一把小提琴,"高光"辅助器被称为小提琴。:http://jsfiddle.net/wC6JT/3/。这不会产生任何结果,因为我们将得到person.lastName的控制台错误,在"高亮显示"注册助手中无法识别。
我想在person.lastName的全名助手中使用"高亮显示"助手。这是怎么实现的。
要从另一个函数调用Handlebars助手,可以使用Handlebars.helpers
:
Handlebars.registerHelper('fullName', function(person) {
var lastName = Handlebars.helpers.highlight.apply(this, [person.lastName]);
var firstName = Handlebars.Utils.escapeExpression(person.firstName);
return new Handlebars.SafeString(firstName + " " + lastName);
});
Handlebars.registerHelper('highlight', function(str) {
var safeStr = Handlebars.Utils.escapeExpression(str);
var item = safeStr.replace("Finch", "<em>Finch</em>");
return new Handlebars.SafeString(item);
});
这是一把正在工作的小提琴:http://jsfiddle.net/acLcsL6h/1/
阅读这篇博客文章以获取另一个例子。
将要在第一个方法中使用的方法的内容提取到其自己的javascript方法中。然后根据需要在两个助手中调用该javascript方法。
除非将其中一个方法的内容重构为其自己的javascript方法,否则无法执行此操作。
所以在你的情况下,它应该看起来像这样:
Handlebars.registerHelper('fullName', function(person) {
return person.firstName + " " + highlightJavascript(person);
});
Handlebars.registerHelper('highlight', highlightJavascript);
highlightJavascript : function(person) {
var item = (person.lastName).replace('Finch', '<span style="color: red">'
+ Finch + '</span>');
return new Handlebars.SafeString(item);
}
您可以使用这种方式:http://goo.gl/oY4IIO不需要连接字符串。
<script id="tmp" type="text/x-handlebars-template">
<p>test: {{test "2.3333333"}}</p>
<p>format: {{format "2.3333333"}}</p>
</script>
Handlebars.registerHelper('format', function (value) {
return parseFloat(value).toFixed(2);
});
Handlebars.registerHelper('test', function (value) {
var source = '{{format x}}';
var context = {x:value};
var html = Handlebars.compile(source)(context);
return new Handlebars.SafeString(html);
});
$(document).ready(function () {
var source = $('#tmp').html();
var template = Handlebars.compile(source);
var html = template();
$('#main').html(html);
});
输出:测试:2.33格式:2.33
相关文章:
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 实现一个建立在google.com之上的自定义搜索引擎
- SuiteScript2.0-包括一个自定义文件
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 使用drupal中自定义javascript文件中的一个函数
- 遍历SC.ManyArrray以创建要附加到SproutCore中的另一个视图的自定义视图
- Wordpress在播放器旁边播放一个自定义的下载按钮,而不是下载
- hapi:包括一个js自定义库
- SuiteScript:如何有一个自定义的数据字段来从数据库加载信息
- 使用谷歌地图:一个返回undefined的自定义javascript函数
- 如何使用其他自定义指令中的元素标记作为另一个自定义指令的模板
- 调用另一个自定义指令的角度自定义指令
- 试图使一个事件依赖于另一个事件,并使用jquery自定义事件传递数据
- jQuery自定义验证只显示最后一个字段的错误
- 我想做一个自定义的dojo JsonRest商店,有一部分我没有'我不明白
- 如何获得一个动态增长的自定义对象的Javascript数组
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- 我想知道如何创建一个自定义对话框,当点击按钮时会弹出
- 如何在谷歌地图API v3上自定义一个地面覆盖图标动画
- 我应该自定义一个照片库还是调整现有的