我尝试立即将数据传递给模板调用:
var compiled = _.template('template code there', {params: 123})
关于规范变量'编译'必须准备好用作HTML标记。
但是!我有一个功能..
这对我来说真的很奇怪..我在plnkr.co上运行了这段代码,它给出了期待的结果,但是在本地它并没有按预期工作。
P.S。在我的例子中,我使用bower下载脚本
<script src="../scripts/vendor/jquery/dist/jquery.js"></script>
<script src="../scripts/vendor/underscore/underscore.js"></script>
<script src="../scripts/vendor/backbone/backbone.js"></script>
...
var list = "<%= ... %>";
var compiled = _.template(list, {data : ['one', 'two']});
alert(compiled); // got function !
有人可以解释一下吗?
P.S。工作示例 - http://jsfiddle.net/xm6ymxoj/ 并且我无法在我的机器上本地重现这个简单的代码,因此我收到一个函数(处于警报状态)。
答案 0 :(得分:2)
_.template(templateString, [settings])
(请参阅docs)将字符串编译为模板。这个模板是一个函数,然后可以使用一些给定的数据呈现给HTML。
来自文档:
var compiled = _.template("hello: <%= name %>");
compiled({name: 'moe'});
=> "hello: moe"
编辑:因此,在您的示例中,您应该使用:
var list = "<%= ... %>";
var compiled = _.template(list);
var html = compiled({data: ['one', 'two']})
答案 1 :(得分:0)
网络中的许多代码示例都是这样的:
var c_markup = _.template("Hello <%=user%>!", { user: "MyName" });
但据我所知,这段代码已经过时,现在还没有用。
我们需要将参数传递给准备好的函数调用:
var c_markup = _.template("Hello <%=user%>!");
c_markup({ user: "MyName" });
这一刻让我很困惑。希望这可以帮助某人。