通常在下划线中将对象作为模型传入时,可以在模板中直接访问属性。
模型
var obj {
prop1: 'a',
prop2: 'b'
}
模板
<p>Property 1 = <%= prop1 %></p>
<p>Property 2 = <%= prop2 %></p>
但是可以访问obj
吗?这似乎没有必要,但在我的例子中,我想在我的模板中的对象上运行一个 for in
循环,但如果我无法访问该模型,我就不能这样做。
感谢任何帮助。
最佳答案
是的,您传入的上下文对象将作为名为 obj
的变量公开
var dataForView = {
prop1: 'a',
prop2: 'b'
}
var template = templateForData.innerHTML;
target.innerHTML = _.template(template , dataForView);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore.js"></script>
<script type="text/html" id='templateForData'>
<p>Property 1 = <%= prop1 %></p>
<p>Property 2 = <%= prop2 %></p>
<p><%= console.log(obj) %> </p>
</script>
<!-- Create your target -->
<div id="target"></div>
尽管我相信将对象作为上下文传递的能力 has been deprecated as of version 1.7所以如果还没有的话,应该这样做。
var dataForView = {
prop1: 'a',
prop2: 'b'
}
var template = templateForData.innerHTML;
var compiled = _.template(template)(dataForView);
target.innerHTML = compiled;
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
<script type="text/html" id='templateForData'>
<p>Property 1 = <%= prop1 %></p>
<p>Property 2 = <%= prop2 %></p>
<p><%= console.log(obj) %> </p>
</script>
<!-- Create your target -->
<div id="target"></div>
关于javascript - 可以在下划线模板中访问 'root' 模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44757751/