在每个呈现的dom节点中存储jquery模板数据
我正在从服务器检索一个列表json数据,该数据使用jquery模板呈现到一个行表中。例如:在每个呈现的dom节点中存储jquery模板数据,jquery,templates,binding,Jquery,Templates,Binding,我正在从服务器检索一个列表json数据,该数据使用jquery模板呈现到一个行表中。例如: <script id="entry_tmpl" type="text/x-jquery-tmpl"> <tr class="row_data" name="${id}> <td class="col_name">${name}</td> <td class="col_number">${number}<
<script id="entry_tmpl" type="text/x-jquery-tmpl">
<tr class="row_data" name="${id}>
<td class="col_name">${name}</td>
<td class="col_number">${number}</td>
</tr>
</script>
到目前为止没有什么特别的。现在请注意,除了“name”和“number”之外,我在数据对象中还有一些额外的数据,它们不是由模板呈现的。我希望以后能够在javascript内部访问这些属性。因此,我想找到一种方法来保存每个渲染注释的原始数据。所以以后我可以这样做:
var elmentObj = $("#row_data[name='5']").prop('obj_data');
var other_data = elementObj['other_data'];
实现这一目标的最佳方式是什么?我在网上到处搜索,找不到解决方案来完成我想做的事情。因此,在使用jquery填充表后,我自己在一个循环中设置了数据。数据:
for (var i=0; i<entries.length; ++i) {
var e = entries[i];
$(_.str.sprintf("#entry_tmpl .row_data[name='%s']", e.id)).data('tmpl_data', e);
}
这并不理想,因为我正在寻找一种在模板渲染期间实现这一点的方法,所以我不需要额外的循环,但这可以完成任务。在您的问题中,这似乎是一个循环,您可以在将其渲染到变量中时捕获它,这样可以保存它以备以后使用,但看起来像是您在尝试,但从已填充的表中,那是在被捕之后。那么是什么原因呢?您可能指的是更晚的版本,即浏览器存储?对不起,也许我没有解释清楚。我已经将整个数据存储在变量'entries'中,它显示在我的代码中,但是,它与dom节点是分开的。我在其他地方有javascript代码,它直接与渲染节点一起运行,我发现必须循环使用我的原始“entries”变量来定位所需的对象很不方便。如果我能够在dom中存储每个元素数据,那么我的其他代码就可以快速访问对象,因为我当前的代码已经引用了dom节点。这样更方便。似乎在渲染节点后,我应该再次遍历“entries”变量,并使用jquery的.data方法将数据绑定到渲染节点。然而,我的问题是,是否有更有效的方法来实现这一点,可能是在tmpl渲染期间,因为它已经在每个元素之间循环。
for (var i=0; i<entries.length; ++i) {
var e = entries[i];
$(_.str.sprintf("#entry_tmpl .row_data[name='%s']", e.id)).data('tmpl_data', e);
}