KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定
if绑定目的
if绑定一般是格式是data-bind=if:attribute,if后所跟属性或表达式的值应为bool值(也可以是非bool值,当非空字符串时则为真),if绑定的作用与visible绑定的作用类似。可控制DOM的显示与隐藏,不一样的地方是,if绑定是物理删除或添加DOM元素。
示例1
该例展示IF绑定的动态删除添加DOM:
UI源码:
<label><input type="checkbox" data-bind="checked: displayMessage" /> Display message</label> <div data-bind="if: displayMessage">Here is a message. Astonishing.</div>
视图模型源码:
ko.applyBindings({
    displayMessage: ko.observable(false)
});
示例2
该示例中,通过foreach绑定循环planets监控属性数组,其中name为Mercury的项目中capital为null,则循环中该项目只显示其name.
<ul data-bind="foreach: planets">
<li>
Planet: <b data-bind="text: name"> </b>
<div data-bind="if: capital">
Capital: <b data-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>This item always appears</li>
<!-- ko if: someExpressionGoesHere -->
<li>I want to make this item present/absent dynamically</li>
<!-- /ko -->
</ul>
ifnot绑定
ifnot绑定是if绑定的逆向表达,格式与if绑定一样,只是判断结果与if整好相反。就像等于和不等于一样。例如:
<div data-bind="ifnot: someProperty">...</div>
其等效写法为:
<div data-bind="if: !someProperty()">...</div>
有人会说使用if绑定是足够了。为毛还要ifnot绑定。原因是有很多强迫症患者喜欢这种ifnot的绑定方式,看起来更易懂,代码更整洁。
KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定的更多相关文章
- KnockoutJS 3.X API 第四章 数据绑定(5) 控制流component绑定
		本节目录: 一个例子 API 备注1:仅模板式的component 备注2:component虚拟绑定 备注3:传递标记到component绑定 内存管理 一个例子 First instance, w ... 
- KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
		foreach绑定 foreach绑定主要用于循环展示监控数组属性中的每一个元素,一般用于table标签中 假设你有一个监控属性数组,每当您添加,删除或重新排序数组项时,绑定将有效地更新UI的DOM- ... 
- KnockoutJS 3.X API 第四章 数据绑定(4) 控制流with绑定
		with绑定的目的 使用with绑定的格式为data-bind="with:attribute",使用with绑定会将其后所跟的属性看作一个新的上下文进行绑定.with绑定内部的所 ... 
- KnockoutJS 3.X API 第四章 数据绑定(1) 文本及样式绑定
		目录 本节将介绍六种文本绑定方式: visible绑定 text绑定 html绑定 css绑定 style绑定 attr绑定 可见文本绑定(visible) 使用visible绑定,来控制DOM元素的 ... 
- KnockoutJS 3.X API 第四章(13) template绑定
		目的 template绑定(模板绑定)使用渲染模板的结果填充关联的DOM元素. 模板是一种简单方便的方式来构建复杂的UI结构 . 下面介绍两种使用模板绑定的方法: 本地模板是支持foreach,if, ... 
- KnockoutJS 3.X API 第四章 表单绑定(11) options绑定
		目的 options绑定主要用于下拉列表中(即<select>元素)或多选列表(例如,<select size='6'>).此绑定不能与除<select>元素之外的 ... 
- KnockoutJS 3.X API 第四章 表单绑定(6) click绑定
		目的 click绑定主要作用是用于DOM元素被点击时调用相关JS函数.最常见用于button.input.a元素. 例如: You've clicked timesClick me var viewM ... 
- KnockoutJS 3.X API 第四章 表单绑定(7) event绑定
		目的 event绑定即为事件绑定,即当触发相关DOM事件的时候回调函数.例如keypress,mouseover或者mouseout等 例如: Mouse over me Details var vi ... 
- KnockoutJS 3.X API 第四章 表单绑定(8) submit、enable、disable绑定
		submit绑定目的 submit绑定即为提交绑定,通常用于form元素.这种绑定方式会打断默认的提交至服务器的操作.转而提交到你设定好的提交绑定回调函数中.如果要打破这个默认规则,只需要在回调函数中 ... 
随机推荐
- JQuery 1.8.3对IE9兼容问题getAttribute
			jQuery1.8.3在IE9下attr报错问题 jQuery1.8.3在IE9中attr方法保存. 解决方案如下: r = e.getAttribute(n); 修改为: r = e.getAttr ... 
- Cordova for iOS[ PhoneGap]
			安装这个费了点劲,和早前的PhoneGap有些不同. Cordova支持如下移动操作系统:iOS, Android,ubuntu phone os, Blackberry, Windows Phone ... 
- iOS CGContextRef画图时的常用方法
			UIView的drawRect方法 CoreGraphics绘图 综述:描述系统会调用UIView的drawRect方法,所以coreGraphics的所有实现代码放在该函数内,setNeedsDis ... 
- html+css+javascript实现简易轮播图片
			html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <lin ... 
- IOS 跳转至AppStore的两种方式
			//第一种方法 直接跳转 id+编号 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps: ... 
- java jinfo命令详解
			jinfo (configuration info): 功能:输出Java进程的系统信息与jvm参数. 摘要: jinfo [ option ] pid jinfo [ option ] execut ... 
- Python小爬虫练习
			# coding: utf-8 __author__ = 'zhangcx' from urllib3 import PoolManager import codecs import json cla ... 
- Jumony快速抓取网页 ---  Jumony使用笔记--icode
			作者:郝喜路 个人主页:http://www.cnicode.com 博客地址:http://haoxilu.cnblogs.com 时间:2014年6月26日 19:25:02 ... 
- 将SQL SERVER数据库改成MySql
			(www.helpqy.com) 架构在阿里云上,最先想采用SQL SERVER,想大家都是微软家族的嘛.但是发现SQL SERVER需要的配置比较高,需要的银子也比较多,最后在纠结之下换成了MySq ... 
- [你必须知道的NOSQL系列]专题二:Redis快速入门
			一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这 ... 
