Предположим, у меня есть такой шаблон 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>
Если я визуализирую это шаблон в нескольких местах на странице Я получаю несколько входов с одинаковым идентификатором (и несколько меток с одинаковым значением для ), что имеет плохие последствия. В частности, весь код, зависящий от идентификаторов, может работать некорректно (в моем случае я использую плагин jquery.infieldlabel, который сбивает с толку несколько входов с одним и тем же идентификатором). Сейчас я решаю эту проблему: добавляю уникальный атрибут 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>
Это работает, но не очень элегантно, так как у меня должен быть этот атрибут искусственного идентификатора в моих моделях, который не используется ни для чего другого. Интересно, есть ли здесь лучшее решение.