javascript - 可以在下划线模板中访问 'root' 模型吗?

标签 javascript object underscore.js for-in-loop

通常在下划线中将对象作为模型传入时,可以在模板中直接访问属性。

模型

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>

JSFiddle

尽管我相信将对象作为上下文传递的能力 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/

相关文章:

javascript - 如果音频标签 src 加载失败,则确定音频文件长度 Javascript

javascript - 需要 jQuery 代码将参数附加到 div 中包含的所有 url

javascript - 有没有一种有效的方法可以让按钮自动将文本复制到剪贴板? (JavaScript)

javascript - 使用下划线修改另一个对象内部的对象内部的数组?

javascript - 如何在打开文件并调用 imageareaselect 时获取原始图像大小

Javascript 函数 Object.keys 无法正常工作

java - 自定义对象属性 - 多个原始变量或对象数组

C++:调用类对象

JavaScript : Make an array of value pairs form an array of values

javascript - 使用下划线对数组中的嵌套对象进行排序