2013-11-08 2 views
9

У меня есть шаблон, который я хотел бы использовать другой бит HTML на основе управления используется:Использование Knockout, чтобы проверить, если не определено

<!-- ko if: Value --> 
    ........ 
<!-- /ko --> 

<!-- ko ifnot: Value --> 
    ........ 
<!-- /ko --> 

Цель этого кода, чтобы выбрать первый бит, если Value определяется, второй бит, если нет. Тем не менее, это всегда вызывает ошибку привязки: Value is not defined, который я уверен, что ошибки просто проверяются, установлен ли элемент управления Value.

Есть ли лучший способ использовать эти операторы if, чтобы проверить, определено ли привязка или нет?

ответ

24

Если Value действительно не определен, тогда вы можете использовать $data.Value, чтобы избежать «неопределенных» ошибок.

+0

Works! Благодарю вас. – tnw

2

Вы можете использовать динамические шаблоны. В модели представления:

self.valueRenderer = ko.computed(function() { 
    return ko.unwrap(self.Value) ? "valueTemplate" : "noValueTemplate"; 
}); 

в HTML:

<div data-bind="template: valueRenderer"></div> 

<!-- ... --> 

<script type="text/html" id="valueTemplate"> 
    <!-- some complex template... --> 
</script> 

<script type="text/html" id="noValueTemplate"> 
    <div>There is no value...</div> 
</script> 
+0

Да, я подумал, что это путь. В настоящее время два элемента управления используют один и тот же шаблон, мы должны реорганизовать его, чтобы явно использовать конкретный шаблон. – tnw

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