2014-02-13 3 views
0

Я создал несколько шаблонов в нокауте, которые по существу действуют как элементы управления на странице. В качестве примера простого управления, чтобы выбрать из группы значений выглядит следующим образом:Создание многоразового шаблона в нокауте

<div data-bind="foreach: values"> 
     <div data-bind="css: { selectedItem: $parent.value() == $data.value }, event: { click: function() { $parent.value($data.value) } }"> 
      <span data-bind="text: name"></span> 
     </div> 
</div> 

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

Я знаю, что привязка foreach имеет опцию «as» alias, есть ли что-либо подобное где я могу предоставить псевдонимы для нескольких свойств шаблону? Или есть лучший способ справиться с этим?

В настоящее время у меня есть промежуточная модель, которая принимает значения, значение и имя в конструкторе, а затем использует это для привязок, но для меня это становится излишне сложным.

ответ

0

Вы можете объединить в шаблон и методы Foreach для достижения результата вам нужно

http://knockoutjs.com/documentation/template-binding.html (Примечание 3)

Не зная остаток вашего просмотра моделей/HTML, следующий должен дать представление о том, как это работает

<script type="text/html" id="name-set"> 
    <div data-bind="css: { selectedItem: $parent.value() == $data.value }, event: { click: function() { $parent.value($data.value) } }"> 
     <span data-bind="text: name"></span> 
    </div> 
</script> 

<div data-bind="template: { name: 'name-set', foreach: values }"></div> 
+0

Привет, Роберт, шаблон, который я показал, был просто примером, другие, которые я использую, более сложны, чем можно было бы использовать с помощью foreach. Мой вопрос был более похожим на то, что он мог предоставить группу алиасов шаблону, чтобы легче использовать его. – nzyme

Смежные вопросы