Handlebars.Net 如果数据不存在如何更改行为
Handlebars.Net How to change behavior if data does not exist
在Handlebars.Net中,如果没有匹配的字段,它只是在那里放置一个空白。
string source = @"My name is {{Name}} and I work at {{Job}}";
var template = Handlebars.Compile(source);
var data = new {
Job = "Walmart"
};
var result = template(data);
结果是因为 {{Name}}
不在数据中。
My name is and I work at Walmart
有没有设置说,如果数据字段不存在就不要替换?
我想要 return:
My name is {{Name}} and I work at Walmart
我认为您必须使用 #if
,如:
My name is {{#if Name}}{{Name}}{{else}}\{{Name}}{{/if}} and I work at {{Job}}
注意:我要感谢这个 answer 如何告诉 Handlebars 渲染大括号。
有两种选择:
在 1.x 中支持:使用 UnresolvedBindingFormatter
handlebars.Configuration.UnresolvedBindingFormatter = "('{0}' is undefined)";
从 2.0.0-preview-1: use helperMissing
hook
开始支持
handlebars.RegisterHelper("helperMissing", (context, arguments) =>
{
var name = arguments.Last().ToString();
return "{{" + name.Trim('[', ']') + "}}";
});
有关详细信息,请参阅 this GitHub issue。
在Handlebars.Net中,如果没有匹配的字段,它只是在那里放置一个空白。
string source = @"My name is {{Name}} and I work at {{Job}}";
var template = Handlebars.Compile(source);
var data = new {
Job = "Walmart"
};
var result = template(data);
结果是因为 {{Name}}
不在数据中。
My name is and I work at Walmart
有没有设置说,如果数据字段不存在就不要替换?
我想要 return:
My name is {{Name}} and I work at Walmart
我认为您必须使用 #if
,如:
My name is {{#if Name}}{{Name}}{{else}}\{{Name}}{{/if}} and I work at {{Job}}
注意:我要感谢这个 answer 如何告诉 Handlebars 渲染大括号。
有两种选择:
在 1.x 中支持:使用
UnresolvedBindingFormatter
handlebars.Configuration.UnresolvedBindingFormatter = "('{0}' is undefined)";
从 2.0.0-preview-1: use
开始支持helperMissing
hookhandlebars.RegisterHelper("helperMissing", (context, arguments) => { var name = arguments.Last().ToString(); return "{{" + name.Trim('[', ']') + "}}"; });
有关详细信息,请参阅 this GitHub issue。