【发布时间】:2012-03-03 05:46:45
【问题描述】:
假设我有这样的 knockout.js 模板:
<script type="text/html" id="mytemplate">
<label for="inputId">Label for input</label>
<input type="text" id="inputId" data-bind="value: inputValue"/>
</script>
如果我在页面上的多个位置呈现此模板,我最终会得到具有相同 id 的多个输入(以及具有相同 for 值的多个标签),这会产生不良后果。特别是,所有依赖于 id 的代码可能无法正常工作(在我的情况下,我使用 jquery.infieldlabel 插件,它会被具有相同 id 的多个输入混淆)。我现在解决此问题的方法是向绑定到模板的模型添加唯一 id 属性:
<script type="text/html" id="mytemplate">
<label data-bind="attr: {for: id}>Label for input</label>
<input type="text" data-bind="attr: {id: id}, value: inputValue"/>
</script>
这可行,但它不是很优雅,因为我的模型中必须有这个不用于其他任何东西的人工 id 属性。我想知道这里是否有更好的解决方案。
【问题讨论】:
标签: knockout.js client-side-templating