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 不间断的图片滚动并可点击
Jan 15 Javascript
javascript中创建对象的三种常用方法
Dec 30 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
JavaScript判断日期时间差的实例代码
Mar 01 Javascript
详解vue 数据传递的方法
Apr 19 Javascript
vue结合axios与后端进行ajax交互的方法
Jul 06 Javascript
实例详解BootStrap的动态模态框及静态模态框
Aug 13 Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 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
德生H-501的评价与改造
2021/03/02 无线电
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
浅谈python中的数字类型与处理工具
2017/08/02 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python中is和==的区别详解
2018/11/15 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python__name__原理及用法详解
2019/11/02 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
实习医生自我评价
2013/09/22 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
如何写求职信
2014/05/24 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
催款函范本大全
2015/06/24 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书