3
我有一个骨干视图,它将搜索结果呈现在下划线模板中。正如我想强调在结果中搜索词我在模板中的以下打印方法:如何将其他变量传入下划线模板
print(someKey.replace(searchTerm, '<b>' + searchTerm + '</b>')
它的工作原理aspected,但我必须设置在全局命名空间的searchTerm
变量来得到这个工作。我不知道是否有访问打印方法我的意见模型的方式,这样我就可以写这样的:
print(someKey.replace(searchTerm, '<b>' + this.model.get('searchTerm') + '</b>')
或者,如果我能在我的渲染功能和访问它设置SEARCHTERM作为一个局部变量我的模板。
这里是整个骨干观点:
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();
}
});
这似乎有点矫枉过正到我的结果合并一个新的对象,但经过考虑之后,似乎对这个问题的唯一解决方案,使用全局变量或内联模板到函数旁边,在那里声明searchTerm变量。 – 2012-01-10 21:31:01
我同意这是一个非常奇怪的情况。您基本上将“searchTerm”从您的模型中拉出,迭代您的模型集合,然后将“searchTerm”重新绑定到集合中的每个项目。您始终可以将整个模型绑定到模板,而不是将其分开。然后将你的html包装在模板中的_.each()中。这只是偏好。祝你的项目好运:D – Mike 2012-01-10 21:39:22
你能否在答案中显示你最后的建议。 – 2012-01-10 21:45:17