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 attr方法获取input的checked属性问题
May 26 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
jQuery简单实现隐藏以及显示特效
Feb 26 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 Javascript
JS显示日历和天气的方法
Mar 01 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
jquery使用FormData实现异步上传文件
Oct 25 jQuery
js实现盒子拖拽动画效果
Aug 09 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脚本的10个技巧(5)
2006/10/09 PHP
PHP初学入门
2006/11/19 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
PHP比你想象的好得多
2014/11/27 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
分享php邮件管理器源码
2016/01/06 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
全面理解闭包机制
2016/07/11 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python MySQLdb使用教程详解
2018/03/20 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python实现按行分割文件
2019/07/22 Python
遵纪守法演讲稿
2014/05/23 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
销售会议开幕词
2015/01/28 职场文书
青年教师个人总结
2015/02/11 职场文书
家属联谊会致辞
2015/07/31 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL