下划线js模板不起作用

时间:2015-06-29 23:49:11

标签: templates underscore.js underscore.js-templating

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

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

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

我得到“你好结果”,这应该是你好爸爸。 你能指出什么是错的吗? 感谢

2 个答案:

答案 0 :(得分:1)

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

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

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

你想放弃最后一次alert电话支持:

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

答案 1 :(得分:0)

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

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