我有一个主干视图,它在下划线模板中呈现搜索结果。由于我想在结果中突出显示搜索词,因此我在模板中使用了以下打印方法:
print(someKey.replace(searchTerm, '<b>' + searchTerm + '</b>')
它按预期工作,但我必须设置searchTerm
全局命名空间中的变量来完成这项工作。我想知道是否有一种方法可以在打印方法中访问我的视图模型,所以我可以这样写:
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();
}
});