var demo2ViewModel =function(){
var self =this;
self.displayable=ko.observable(false);
setInterval(function(){self.displayable(!self.displayable())},1000);
};
ko.applyBindings({
displayMessage: ko.observable(false)
}, document.getElementById("Demo1"));
ko.applyBindings(new demo2ViewModel() ,document.getElementById("Demo2"));
<h1>演示 KnockOut if绑定 功能</h1>
<hr />
<ul>
<li class="Point">
1、<b class="PointTitle">使用<span class="KeyWord">if</span>绑定</b><br />
<ul class="PointDesc">
<li>if绑定和visible绑定有着相似之处,但是也有不同:
<ul>
<li>1、visible绑定用于一个容器元素,是通过控制css的display来显示或者隐藏元素。元素本身的data-bind等都还是会执行的</li>
<li>2、if绑定用于一个容器元素,是通过真正的从DOM里移除或者加入元素来实现的。只有当表达式为true时,元素才会加入DOM</li>
</ul>
</li>
</ul>
<div class="PointDemo" id="Demo1">
<label><input type="checkbox" data-bind="checked: displayMessage" /> 勾中显示</label>
<div data-bind="if: displayMessage">这里有一个信息,勾中则显示</div>
</div>
<div class="PSFrame">
需要注意的是,if绑定如果为false,容器元素自身仍然存在,只是里面的子元素全部不在DOM中。<br>
另外,if可以绑定到任何一个表达式,如果绑定了observable的变量,则会根据变量值的变换动态更新
</div>
<hr />
</li><li class="Point">
2、<b class="PointTitle"><span class="KeyWord">不依赖容器</span>使用if绑定</b><br />
<ul class="PointDesc">
<li>如果不需要容器元素作为if绑定对象,可以使用注释来创建ko虚拟容器元素实现if绑定</li>
</ul>
<div class="PointDemo" id="Demo2">
<ul>
<li>使用注释创建虚拟标签实现绑定</li>
<!-- ko if: displayable -->
<li>这段话每隔一秒会显示一次</li>
<!-- /ko -->
</ul>
</div>
<div class="PSFrame">
注意DOM元素的变化,if内部的标签确实会从DOM中移除,而不是仅仅隐藏。所以使用if绑定会频繁修改DOM结构
</div>
<hr />
</li>
</ul>
/*Demo�ļ���ʽ*/
body
{
background-color: #e3e5d4;
}
/* ֪ʶ�� */
.Point
{
margin: 20px,0,0,0;
}
/* ֪ʶ����� */
.PointTitle
{
color:#0d8d0d;
}
/* �ؼ��� */
.KeyWord
{
color:Red;
}
/* ֪ʶ������ */
.PointDesc
{
font-family: Arial;
font-size: 15px;
color:#09acb8;
}
.PointDesc li
{
margin: 10px,0,0,0;
}
/* ֪ʶ��Demo��� */
.PointDemo
{
border-style:double;
border-color:#dcd559;
min-height:100px;
font-family: Corbel;
font-size: 20px;
color: #00174f;
}
/* ��Ҫ������ʾ����Ϣ��� */
.PSFrame
{
border-style: dashed;
border-color:#78e6ef;
font-family: Corbel;
font-size: 20px;
font-style:italic;
color: #b86c00;
}
/* ������ʾ */
.error {
color:Red;
}
/* ********************************************************** */
/*��Ҫǿ������ʽ*/
.Notice
{
font-weight: bold;
font-family:Bodoni MT Black;
color: #cd0707;
}
/* ********************************************************** */
/*�������ʽ*/
input[type="text"]
{
min-width:250px;
}
select
{
min-width:400px;
}
External resources loaded into this fiddle: