我想知道在渲染模板时是否可以传递全局变量。基本上每次调用控制器时都会得到这个变量,所以看起来像这样:
window.myVar = 0;
//this var will change in a given moment when I make a request to the server.. so:
//into the render method of my view, I have something like this:
var template = _.template($("#myTemplate").html(), { varIwantToPass : myVar } );
this.$el.html(template);
这样我可以通过以下方式访问模板:
<%= varIwantToPass.get('myVar') %>
如果可能的话?而且,每次渲染视图时,此代码将再次执行并更新值?
答案 0 :(得分:1)
是的,除了模板必须是
<%= varIwantToPass %>
并将变量作为window.myVar传递,因此您不会意外地将其替换为
是的,如果每次都传递变量,它将在每次渲染后更新
工作示例:
HTML:
<script id="myTemplate" type="text/html">
<%= varIwantToPass%>
</script>
<div></div>
JS:
window.myVar = 'a';
var templateHtml = $("#myTemplate").html()
var render = function () {
var template = _.template(templateHtml, { varIwantToPass : window.myVar } );
return template;
}
$('div').html(render());
window.myVar = 'b'; //change variable
setTimeout(function() {
$('div').html(render());
}, 1000)
但是我会提倡不使用全局变量,而是将其保存在骨干视图中的某个位置,甚至更好地保存模型,然后通过监听模型更改事件进行渲染