我尝试这样做的事情现在可以简化我的生活。
我该怎么做:
这是我在app文件中的视图
window.ArtView = Backbone.View.extend({
template:_.template($('#art').html()),
render:function (eventName) {
var output="blablbla";
$(this.el).html(this.template({"output":output}));
return this;
}
});
...
// function that I would like to call
function callFunction(){
console.log('it works!');
}
index.html中的模板
<script type="text/tempate" id="art">
<div data-role="header" class="header" data-position="fixed">
<a href="#" data-icon="back" class="back ui-btn-left">Back</a>
</div>
<div data-role="content" class="content">
callFunction();
<% console.log(output) %>
</div>
</script>
如何在我的模板或类似的东西中调用callFunction()?
有什么想法吗?
谢谢!
答案 0 :(得分:16)
我相信只要模板的对象具有该功能,您就可以调用模板中的函数。
render:function (eventName) {
var output="blablbla";
var data = _.extend({"output":output}, callFunction);
$(this.el).html(this.template(data));
return this;
}
然后在你的模板中:
<%= callFunction() %>
答案 1 :(得分:5)
这就是我做的,它运作正常。
template: _.template(templateText , {
imports : {
check :function (val){
// blah blah
}
}
}
}),
然后在你的html模板中
<%= check('value') %>
答案 2 :(得分:0)
那是错的。将模板视为字符串,html标记。你得到它并用实际数据替换它的一些部分。如果你想做一些DOM操作,那么应该在那之后进行。让我们知道您在callFunction中想要做什么,我们可以引导您找到适合该逻辑的地方。