下划线 js 模板不起作用

underscore js template does not work

这应该很简单, 但我不知道为什么它不起作用。我在这里浪费了大约一整天。

https://jsfiddle.net/panyongfeng/m73vnz9j/

<script>
        var tpl = "hello: <%= name %>";
        var compiled = _.template(tpl);
        compiled({
            name: "dadf"
        });
        alert(compiled());
</script>

刚收到"hello result",应该是hello dadf。 你能指出什么不对吗? 谢谢

您误解了文档中的示例。当他们这样说时:

var compiled = _.template("hello: <%= name %>");
compiled({name: 'moe'});
=> "hello: moe"

上下文是他们在 REPL 中工作,就好像他们在命令行中 运行 node 一样。这意味着 => 之后的内容是最后一个表达式的结果,而 hello: moe 字符串是 compiled({name: 'moe'}) returns。 运行 模板函数 returns 以字符串形式填充的模板,它不会将结果存储在任何地方。

您想放弃最后一个 alert 电话以支持此:

alert(compiled({ name: "dadf" }));

你的代码是正确的,但如果你想使用结果,那么你需要存储编译方法的结果。所以你的代码应该是 -

var dump = compiled({ name: "dadf" });
alert(dump);