Уникальные идентификаторы в шаблонах knockout.js

Предположим, у меня есть такой шаблон 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>

Это работает, но не очень элегантно, так как у меня должен быть этот атрибут искусственного идентификатора в моих моделях, который не используется ни для чего другого. Интересно, есть ли здесь лучшее решение.

23
задан Roman Bataev 10 February 2012 в 18:54
поделиться