2013-04-15 4 views
0

В моей форме нокаута, у меня есть много кода дублировать как это:Шаблон для консультации/издания общего поля формы

<div data-bind="if:Id == 0"> 
My form field : <input type="text" name="MyFormField" data-bind="value:MyFormField /> 
</div> 
<div data-bind="if:Id != 0"> 
My form field consultable : <span data-bind="text:MyFormField"></span> 
</div> 

Как вы можете видеть, если Id = 0, я показываю вход , или простой диапазон, если только для консультации.

Можно ли создать общий шаблон? Идея будет:

  1. Вызова шаблона со ссылкой на имущество, я хочу показать
  2. Если Id == 0, шаблон визуализации входа, а шаблон визуализации пролета

Спасибо заранее!

ответ

2

Рассматривая примечание 5 из documentation, вы можете динамически выбирать, какой шаблон вы хотите использовать для раздела. В вашем случае, это было бы что-то вроде:

<ul data-bind='template: { name: templateName }'> </ul> 

Затем добавить вычисляемое свойство модели вида:

templateName = ko.computed(function() 
{ 
    return Id() === 0 ? 'inputTemplate' : 'spanTemplate'; 
}); 

А затем ваши два шаблона называется так же, как два именования вариантов в рассчитано:

<script type="text/html" id="inputTemplate"> 
    <input type="text" data-bind="text: name" /> 
</script> 

<script type="text/html" id="spanTemplate"> 
    <span data-bind="text: name" /> 
</script> 
+0

Я предполагаю, что второй идентификатор шаблона (для диапазона) - это spanTemplate вместо Template. Кроме того, он работает. Спасибо! – eka808

+1

Да, хорошее место, это была ошибка. Рад, что смог помочь. –

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