使用dust.js,是否可以输出JSON键?
即如何在我的模板中不硬编码它们的情况下输出键“名称”和“配置文件”?
{
name: "Foo",
profile: {
name: "Bar"
}
}
最终文本、JSON 密钥名称和配置文件没有条形码。
name Foo
profile - name - Bar
使用dust.js,是否可以输出JSON键?
即如何在我的模板中不硬编码它们的情况下输出键“名称”和“配置文件”?
{
name: "Foo",
profile: {
name: "Bar"
}
}
最终文本、JSON 密钥名称和配置文件没有条形码。
name Foo
profile - name - Bar
你当然可以。像这样定义一个部分:
{@keyvalue:cont}
{key} - {value}
{/keyvalue}
然后像这样重新定义 JSON 上下文:
cont:{
name: "Foo",
profile: "Bar" //I'm simplifying this a bit for the sake of this example
}
这是为了使上面 keyvalue 部分的上下文被限制为仅“cont”。然后你可以像这样定义键值助手:
"keyvalue": function(chunk, context, bodies){
var items = context.current(), //this gets the current context hash from the Context object (which has a bunch of other attributes defined in it)
ctx;
for (key in items) {
ctx = {"key" : key, "value" : items[key]};
chunk = chunk.render(bodies.block, context.push(ctx));
}
return chunk
}
应该做的伎俩。在dustjs网站上对此进行了测试。希望您可以添加到此以进入嵌套哈希。
例如,如果您需要在上下文中定义 HTML 标记属性,这将特别有用 - 我不想必须定义一组属性,然后在单独的键中定义它们相应的一组值。我希望他们在一起。更易于阅读,更易于管理。
下面的方法和@asyraf9 的回答几乎一样,只是没有重新定义JSON和一个使用示例。
dust.helpers.iterate = function(chunk, context, bodies, params) {
params = params || {};
var obj = params['on'] || context.current();
for (var k in obj) {
chunk = chunk.render(bodies.block, context.push({key: k, value: obj[k]}));
}
return chunk;
}
来源:https ://github.com/rashad612/dustjs-helpers/commit/9039130dc060a4bf3e93856601891a7da9047bac
在模板中使用它,例如:
{#myobject.myarray}
{@iterate on=.}
{key} - {value}
{/iterate}
{/myobject.myarray}
它显示数组内对象的所有键和值。
Dust 没有内置此功能,因为从哲学上讲,JSON 永远不应该在密钥中包含数据。考虑将您的数据模型更改为:
{
name: "Foo",
profile: {
fields: [
{
title: "name",
value: "Bar"
}
]
}
}