我有一个自定义帮助器,如下所示:
Handlebars.registerHelper('hasAccess', function(val, fnTrue, fnFalse) {
return val > 5 ? fnTrue() : fnFalse();
});
Run Code Online (Sandbox Code Playgroud)
和我的模板,如下:
{{#hasAccess this.access}}
You have access!
{{else}}
You do not have access
{{/hasAccess}}
Run Code Online (Sandbox Code Playgroud)
它工作,除了fnFalse未定义.那么,我该怎么渲染'else'分支呢?
nik*_*shr 35
Handlebars为自定义助手提供了一个包含要应用的不同功能的对象,options.fn以及options.inverse.请参见http://handlebarsjs.com/block_helpers.html#conditionals
你的助手可以写成
Handlebars.registerHelper('hasAccess', function(val, options) {
var fnTrue = options.fn,
fnFalse = options.inverse;
return val > 5 ? fnTrue(this) : fnFalse(this);
});
Run Code Online (Sandbox Code Playgroud)
还有一个演示
Handlebars.registerHelper('hasAccess', function(val, options) {
var fnTrue = options.fn,
fnFalse = options.inverse;
return val > 5 ? fnTrue() : fnFalse();
});
var template = Handlebars.compile($('#tpl').html() );
$("body").append( "<h1>access : 1</h1>" );
$("body").append( template({access:1}) );
$("body").append( "<h1>access : 6</h1>" );
$("body").append( template({access:6}) );Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.11/handlebars.min.js"></script>
<script type='text/template' id='tpl'>
{{#hasAccess this.access}}
You have access!
{{else}}
You do not have access
{{/hasAccess}}
</script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19755 次 |
| 最近记录: |