如何在Hogan.js中使用Lambda时获得值
How to get the value when using Lambda in Hogan.js
我有以下函数处理AJAX成功回调在jQuery:
function success(data) {
var templateData = {
items: data,
formatMoney: function () {
return function (value) {
return Globalization.format(value, 'N');
};
}
};
// fill reports table
var filledTable = tableTemplate.render(templateData);
$tableContainer.html(filledTable);
}
我的模板是这样的:
{#Items}}
<tr>
<td>{{ProductId}}</td>
<td>{{#formatMoney}}{{Cost}}{{/formatMoney}}</td>
</tr>
{{/Items}}
问题是我得到的不是Cost的值,而是{{Cost}}。我知道这是它应该如何工作,因为它描述在胡子手册(http://mustache.github.com/mustache.5.html),但我想得到的值,而不是。
this
将指向我的产品对象,因此我可以使用this.Cost
获得成本,但这是一个简单的情况,我有许多对象类型和许多属性需要格式化,因此我需要一个通用的解决方案来保持事物DRY。
我也可以在服务器端计算这个,但我更喜欢在客户端这样做,因为我不仅在hogan中使用这个数据,而且还在客户端进行其他计算。
是否有更直接,通用和客户端的方式来获得成本的值,而不是未渲染的文字块?
是的。
严格遵守规范的Mustache实现是非常有限的。你的选择是,在你的lambda代码中,渲染"{{Cost}}"字符串(你应该得到这个字符串和一个渲染函数作为你的lambda参数),并将渲染字符串解析成一个浮点数,你的成本。
肯定不干净。但这是可行的。不要忘记在您正在使用的Mustache实现的存储库中打开一个issue。
我认为我们有两个选择。
在hogan.js中使用lambdas
res.render("template", {
lambdas:{
formatMoney: function( cost ){
return cost.format('usd');
}
});
,模板应该是
{#Items}}
<tr>
<td>{{ProductId}}</td>
<td>{{#lambdas.formatMoney}}{{Cost}}{{/lambdas.formatMoney}}</td>
</tr>
{{/Items}}
如问题所述,我们可以使用这个对象。
Javascript代码
res.render("template", {
formatMoney:{
return function(key){
var cost = this[key];
return cost.format('usd');
};
}
});
模板为
{#Items}}
<tr>
<td>{{ProductId}}</td>
<td>{{#formatMoney}}Cost{{/formatMoney}}</td>
</tr>
{{/Items}}
相关文章:
- mongose中的匿名函数与lambda
- AWS Lambda上的权限问题,可以't派生子进程
- 为什么我的Alexa技能测试显示正确的lambda输出,但在开发人员控制台中测试时却给出错误消息
- lambda函数中未定义的变量
- QML:Lambda 函数意外工作
- AWS Lambda调用函数没有'不要总是回来
- Laravel 4 Blade {{}} and Hogan.js {{}} Syntax
- 如何将预编译的hogan.js模板封装到AMD模块中
- Alexa API通过lambda函数请求
- Hogan.js-引用具有特定索引的项
- 为什么不能使用lambda来定义原型函数
- 在 AWS Lambda 中嘲笑
- 使用 AWS Lambda 进行 npm 安装
- AWS Lambda 无法调用 Cognito Identity - IAM 角色
- 默认或继承的 {{section}} 在 node.js 中使用 Hogan
- AWS Lambda 函数和 S3 - 仅当对象发生更改时,才会更改 S3 中对象的元数据
- 是否可以在打字稿中创建命名的“胖箭头”lambda
- 节点异步仅在 node-lambda 内部调用第一个函数
- Hogan不支持预编译模式下的lambda
- 如何在Hogan.js中使用Lambda时获得值