2013-04-28 2 views
1

У меня есть наблюдаемое, которое может иметь значение false (по умолчанию) или объект как значение. следующий блок кода организует HTML структуру в соответствии со значением наблюдаемойKnockout.js if statement boolean test

 <!-- ko: if peer() --> 
     <div id="chatbox" > 
      <div id="textbox">Should be invisible</div> 
     </div> 
     <!-- /ko --> 
     <!-- ko: ifnot peer() --> 
     <div id="banner" >Should be visible</div> 
     <!-- /ko --> 

и наблюдаемая определяется как

function T(){ 
     this.peer = ko.observable(false); 
    }; 
    ko.applyBindings(new T()); 

Оба «должны быть видны» и «Должно быть невидимым» отображаются на стр. Я также пробовал без «()» в условиях, но результат все тот же. См. http://jsfiddle.net/zSKhN/

Что я делаю неправильно?

ответ

4

Вы только что поместили двоеточие неправильно. ko: if должны быть ko if: и так далее, разметка должна выглядеть следующим образом:

<!-- ko if: peer() --> 
<div id="chatbox" > 
    <div id="textbox">Should be invisible</div> 
</div> 
<!-- /ko --> 
<!-- ko ifnot: peer() --> 
<div id="banner" >Should be visible</div> 
<!-- /ko --> 

Вот обновленный jsfiddle вашего примера: http://jsfiddle.net/zSKhN/

+0

Argh! Спасибо. – hinoglu

+0

Нет проблем. Детали, подобные этому, легко пропустить, когда вы застреваете, происходит со мной на ежедневной основе :) – Christoffer