Handlebars.Net 如果数据不存在,如何改变行为

L_7*_*337 0 handlebars.js handlebars.net

在 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);
Run Code Online (Sandbox Code Playgroud)

之所以会这样,{{Name}}是因为不在数据中。

我的名字是,我在沃尔玛工作

有什么设置要说,如果数据字段不存在就不要替换它吗?

我希望它返回:

我的名字是{{Name}},我在沃尔玛工作

小智 5

有两种选择:

  1. 1.x 支持:使用 UnresolvedBindingFormatter

    handlebars.Configuration.UnresolvedBindingFormatter = "('{0}' is undefined)";

  2. 2.0.0-preview-1开始支持:使用helperMissing钩子

    handlebars.RegisterHelper("helperMissing", (context, arguments) =>
    {
        var name = arguments.Last().ToString();
        return "{{" + name.Trim('[', ']') + "}}";
    });
    
    Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此 GitHub 问题