Handlebars.net: 在块表达式 'currency' 关闭之前到达模板末尾
Handlebars.net: Reached end of template before block expression 'currency' was closed
我有一个如下所示的模板:
(为了使代码简短,我删除了 table 的一些元素)
{{#each Tables}}
<div id='report-container'>
<table id='report-table'>
<tr class='header-row'>
<th style='width: 150px; max-width: 150px !important;'>{{this.Title}}</th>
<th>Total Company Net Sales $</th>
...
</tr>
{{#each this.Data}}
<tr>
<td>{{RowTitle}}</td>
<td>{{currency TotalCompanyNetSales}}</td>
...
</tr>
{{/each}}
</table>
</div>
{{/each}}
有帮手:
handleBars.RegisterHelper("currency", (writer, context, parameters) =>
{
var value = decimal.Parse(parameters[0].ToString());
value /= 1000;
var result = value.ToString("0,-28:C2");
return result;
});
我不确定对象本身是否相关,但如果需要我可以 post。问题出在帮手身上。当我尝试编译模板时,出现以下错误消息:
“在块表达式 'currency' 关闭之前到达模板末尾”
如果我删除货币助手,该值将正常显示。它甚至从不调用货币函数。知道我在这里做错了什么吗?
问题与新的 (to Handlebars.Net) return helper
语法的误用有关:您声明的助手实际上是 block
助手返回值:
handleBars.RegisterHelper("currency", (writer /*this is not `writer` but `options`*/, context, parameters) =>
{
// your code here
return result; // change is caused by the `return` statement
});
为了修复助手并仍然使用 return
功能,您应该简单地从 lambda 中删除 options
参数:
handleBars.RegisterHelper("currency", (context, parameters) =>
{
// your code here
return result;
});
我有一个如下所示的模板: (为了使代码简短,我删除了 table 的一些元素)
{{#each Tables}}
<div id='report-container'>
<table id='report-table'>
<tr class='header-row'>
<th style='width: 150px; max-width: 150px !important;'>{{this.Title}}</th>
<th>Total Company Net Sales $</th>
...
</tr>
{{#each this.Data}}
<tr>
<td>{{RowTitle}}</td>
<td>{{currency TotalCompanyNetSales}}</td>
...
</tr>
{{/each}}
</table>
</div>
{{/each}}
有帮手:
handleBars.RegisterHelper("currency", (writer, context, parameters) =>
{
var value = decimal.Parse(parameters[0].ToString());
value /= 1000;
var result = value.ToString("0,-28:C2");
return result;
});
我不确定对象本身是否相关,但如果需要我可以 post。问题出在帮手身上。当我尝试编译模板时,出现以下错误消息:
“在块表达式 'currency' 关闭之前到达模板末尾”
如果我删除货币助手,该值将正常显示。它甚至从不调用货币函数。知道我在这里做错了什么吗?
问题与新的 (to Handlebars.Net) return helper
语法的误用有关:您声明的助手实际上是 block
助手返回值:
handleBars.RegisterHelper("currency", (writer /*this is not `writer` but `options`*/, context, parameters) =>
{
// your code here
return result; // change is caused by the `return` statement
});
为了修复助手并仍然使用 return
功能,您应该简单地从 lambda 中删除 options
参数:
handleBars.RegisterHelper("currency", (context, parameters) =>
{
// your code here
return result;
});