KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定


Posted in Javascript onOctober 10, 2016

if绑定目的

if绑定一般是格式是data-bind=if:attribute,if后所跟属性或表达式的值应为bool值(也可以是非bool值,当非空字符串时则为真),if绑定的作用与visible绑定的作用类似。可控制DOM的显示与隐藏,不一样的地方是,if绑定是物理删除或添加DOM元素。

示例1

该例展示IF绑定的动态删除添加DOM:

Display message

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 第四章之数据控制流if绑定和ifnot绑定,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript与DropDownList 区别分析
Jan 01 Javascript
JS判断数组中是否有重复值得三种实用方法
Aug 16 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
jQuery中map()方法用法实例
Jan 06 Javascript
jQuery实现流动虚线框的方法
Jan 29 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
BOM系列第二篇之定时器requestAnimationFrame
Aug 17 Javascript
jquery validate表单验证插件
Sep 06 Javascript
在javaScript中检测数据类型的几种方式小结
Mar 04 Javascript
微信小程序实现YDUI的ScrollNav组件
Feb 02 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
VUE.CLI4.0配置多页面入口的实现
Nov 25 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
Oct 10 #Javascript
JS命令模式例子之菜单程序
Oct 10 #Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
Oct 10 #Javascript
KnockoutJS 3.X API 第四章之click绑定
Oct 10 #Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 #Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 #Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
Oct 10 #Javascript
You might like
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
用js实现小球的自由移动代码
2013/04/22 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
几种响应式文字详解
2017/05/19 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
python批量修改文件名的实现代码
2014/09/01 Python
python实现日常记账本小程序
2018/03/10 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
广州迈达威.net面试题目
2012/03/10 面试题
大学生简历中个人的自我评价
2013/10/06 职场文书
高校自主招生自荐信
2013/12/09 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
公司合作协议范文
2014/10/01 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
会议主持词开场白
2015/05/28 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
判断Python中的Nonetype类型
2021/05/25 Python
Win11开始菜单添加休眠选项
2022/04/19 数码科技
nginx配置指令之server_name的具体使用
2022/08/14 Servers