Предположим, у меня есть шаблон 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>
Это работает, но это не очень элегантно, так как я должен иметь этот искусственный атрибут id в своих моделях, который не используется ни для чего другого. Интересно, есть ли здесь лучшее решение.