javascript – 如何将其他变量传递给下划线模板
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何将其他变量传递给下划线模板,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1837字,纯文字阅读大概需要3分钟。
内容图文
我有一个骨干视图,可以在下划线模板中呈现搜索结果.由于我想在结果中突出显示搜索词,我在模板中有以下打印方法:
print(someKey.replace(searchTerm, '<b>' + searchTerm + '</b>')
它按预期工作,但我必须在全局命名空间中设置searchTerm变量才能使其工作.我想知道是否有办法在print方法中访问我的视图模型,所以我可以像这样写:
print(someKey.replace(searchTerm, '<b>' + this.model.get('searchTerm') + '</b>')
或者,如果我可以在我的渲染函数中将searchTerm设置为局部变量并在我的模板中访问它.
这是整个Backbone视图:
var searchTerm;
var SearchResultView = Backbone.View.extend({
initialize: function() {
this.model.bind('change:rows', this.render, this);
this.model.bind('change:searchTerm', this.clear, this)
},
template: _.template("<tr><td><% print(someKey.replace(searchTerm, '<b>' + searchTerm + '</b>')); %></td></tr>", this),
render: function() {
searchTerm = this.model.get('searchTerm')
_.each(this.model.get('rows'), function(row) {
this.el.append($(this.template(row.doc)));
}, this)
},
clear: function(){
this.el.empty();
}
});
解决方法:
我不确定我完全理解你的问题.但我沿着这些方向做了一些事情,将多个对象传递给我的模板函数.
$(this.el).html(_.template(html)($.extend({}, this.model.toJSON(), App.lists.toJSON())))
jquery扩展函数允许我将两个对象合并为一个.因此,在您的情况下,您可以在模板期间将“searchTerm”与模型合并.
_.template(html)($.extend({}, row.doc, {"searchTerm": searchTerm}))
您的另一个选择是将整个模型传递到模板函数中,并在模板中执行下划线迭代.如果您需要更多解释,请告诉我.
编辑:
这是jquery extend的链接
如果你不使用jquery,下划线也有和extend method
编辑编辑:
这只是为了给你一个我的第二个建议的例子.可能需要一些调整才能投入你的,但这是个主意.
template: _.template("
<% _(rows).each(function(row) { %>
<tr><td><% print(someKey.replace(searchTerm, '<b>' + searchTerm + '</b>')); %></td></tr>
<% } %>
"),
render: function(){
this.el.append(this.template(this.model.toJSON()));
}
内容总结
以上是互联网集市为您收集整理的javascript – 如何将其他变量传递给下划线模板全部内容,希望文章能够帮你解决javascript – 如何将其他变量传递给下划线模板所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。