【发布时间】:2015-11-10 11:16:38
【问题描述】:
我正在从服务器检索列表 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}</td>
</tr>
</script>
我以标准方式渲染它:
$("#entry_tmpl").tmpl(entries).appendTo(someNode);
到目前为止没有什么特别的。现在请注意,除了“名称”和“编号”之外,我在数据对象中还有一些额外的数据,它们不是由模板呈现的。我希望以后能够在 javascript 中访问这些属性。所以我想找到一种方法来保存每个渲染的笔记的原始数据。所以以后我可以做这样的事情:
var elmentObj = $("#row_data[name='5']").prop('obj_data');
var other_data = elementObj['other_data'];
实现这样的目标的最佳方法是什么?我在网上四处搜索,但无法找到符合我要求的解决方案。
【问题讨论】:
-
这似乎是您的问题中的一个循环,您可以在将其呈现为变量时捕获它,并将其保存以备后用,但看起来您正在尝试,但来自一个已经填充的表,即捕获后。那么什么给了?您可能会在很久以后提到,即浏览器存储? developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API
-
对不起,也许我没有解释清楚。我已经将整个数据存储在变量“条目”中,该变量显示在我的代码中,但是,这与 dom 节点是分开的。我在其他地方有直接与渲染节点一起操作的javascript代码,我发现必须循环通过我原来的“条目”变量来定位所需的对象是不方便的。如果我能够将每个元素数据存储在 dom 中,我的其他代码可以简单地快速获取对象,因为我当前的代码已经引用了 dom 节点。这种方式更方便。
-
似乎在我渲染节点之后,我应该再次通过我的“条目”变量循环并使用 jquery 的 .data() 方法将数据绑定到渲染节点。但是,我的问题是,是否有更有效的方法可以做到这一点,也许在 tmpl() 渲染期间,因为它已经在循环遍历每个元素。