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 相关文章推荐
基于jquery的分页控件(C#)
Jan 06 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
Jun 15 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
jQuery实现遍历复选框的方法示例
Mar 06 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
Node实战之不同环境下配置文件使用教程
Jan 02 Javascript
vue.js项目nginx部署教程
Apr 05 Javascript
微信小程序实现授权登录
May 15 Javascript
十分钟教你上手ES2020新特性
Feb 12 Javascript
js实现购物车商品数量加减
Sep 21 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安全性漫谈
2012/06/28 PHP
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
Django的性能优化实现解析
2019/07/30 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
Python笔试面试题小结
2019/09/07 Python
Python调用Windows命令打印文件
2020/02/07 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
《天游峰的扫路人》教学反思
2014/04/25 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
南湾猴岛导游词
2015/02/09 职场文书
教师节倡议书2015
2015/04/27 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL