KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
if绑定目的
if绑定一般是格式是data-bind=if:attribute,if后所跟属性或表达式的值应为bool值(也可以是非bool值,当非空字符串时则为真),if绑定的作用与visible绑定的作用类似。可控制DOM的显示与隐藏,不一样的地方是,if绑定是物理删除或添加DOM元素。
示例1
该例展示IF绑定的动态删除添加DOM:
Displaymessage
UI源码:
<label><inputtype="checkbox"data-bind="checked:displayMessage"/>Displaymessage</label> <divdata-bind="if:displayMessage">Hereisamessage.Astonishing.</div>
视图模型源码:
ko.applyBindings({ displayMessage:ko.observable(false) });
示例2
该示例中,通过foreach绑定循环planets监控属性数组,其中name为Mercury的项目中capital为null,则循环中该项目只显示其name.
<uldata-bind="foreach:planets"> <li> Planet:<bdata-bind="text:name"></b> <divdata-bind="if:capital"> Capital:<bdata-bind="text:capital.cityName"></b> </div> </li> </ul> <script> ko.applyBindings({ planets:[ {name:'Mercury',capital:null}, {name:'Earth',capital:{cityName:'Barnsley'}} ] }); </script>
备注:使用无容器的if绑定(if虚拟绑定)
像之前的虚拟绑定一样,同样使用<!--ko-->和<!--/ko-->进行。虚拟绑定适用于不改变UI元素的情况。
<ul> <li>Thisitemalwaysappears</li> <!--koif:someExpressionGoesHere--> <li>Iwanttomakethisitempresent/absentdynamically</li> <!--/ko--> </ul>
ifnot绑定
ifnot绑定是if绑定的逆向表达,格式与if绑定一样,只是判断结果与if整好相反。就像等于和不等于一样。例如:
<divdata-bind="ifnot:someProperty">...</div>
其等效写法为:
<divdata-bind="if:!someProperty()">...</div>
有人会说使用if绑定是足够了。为毛还要ifnot绑定。原因是有很多强迫症患者喜欢这种ifnot的绑定方式,看起来更易懂,代码更整洁。
以上所述是小编给大家介绍的KnockoutJS3.XAPI第四章之数据控制流if绑定和ifnot绑定,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!