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 相关文章推荐
一个小型js框架myJSFrame附API使用帮助
Jun 28 Javascript
jQuery验证Checkbox是否选中的代码 推荐
Sep 04 Javascript
Jquery实现页面加载时弹出对话框代码
Apr 19 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
confirm的用法示例用于按钮操作时确定是否执行
Jun 19 Javascript
JavaScript操作Cookie方法实例分析
May 27 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
浅谈Angular6的服务和依赖注入
Jun 27 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 Javascript
Vue路由管理器Vue-router的使用方法详解
Feb 05 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中文编码小技巧
2014/12/25 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
基于jquery的$.ajax async使用
2011/10/19 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
vue.js的提示组件
2017/03/02 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
Python continue语句实例用法
2020/02/06 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
社会学专业求职信
2014/02/24 职场文书
客服部班长工作责任制
2014/02/25 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
校园安全主题班会
2015/08/12 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server