假设我有这样的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>
Run Code Online (Sandbox Code Playgroud)
如果我呈现我最终用相同的ID(和几个标签使用相同的多个输入页面上的几个地方此模板的值),其中有不好的后果.特别是,依赖于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>
Run Code Online (Sandbox Code Playgroud)
这可行,但它不是很优雅,因为我必须在我的模型中使用这个人工id属性,而不是用于其他任何东西.我想知道这里是否有更好的解决方案.