我正在使用lodash模板来呈现客户端的html模板.有许多html模板正在重复.所以,我决定在另一个模板中调用重复模板.例如:
dummy.html
<%= _.template(templates['button'])({ title: "click me" }) %>
上面的方法有效,但是当我调用_.template来反复渲染一个按钮时,我想要创建一个全局函数,如下所示:
dummy.js
var sb = {
setButton: function(data){
data = data || {};
return _.template(templates['button'])(data);
},/* other functions */
}
然后在dummy.html中调用:
<%= sb.setButton({ title: "click me" }) %>
但这不起作用. (它只是不呈现)
我在这做错了什么?
编辑:
我在setButton函数中放置了console.log(this).它没有在chrome控制台中记录任何内容.然后我从lodash模板语法中删除=,然后记录了sb全局变量.
<% sb.setButton({ title: "click me" }) %>
但仍然上面的那个没有渲染按钮.
最佳答案
你编译的模板不知道sb是什么.假设您使用_.template(src)()调用主模板,Lodash会对其进行扼流,并出现类似于ReferenceError的错误:sb未定义.将您的partials哈希作为选项传递,您将获得按钮:
var templates = {
button: '
如果您希望将部分直接提供而不将其传递给模板,请将全局附加到_,例如_.sbb:
var templates = {
button: '
原文地址:https://www.jb51.cc/html/426154.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。