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获得参数的getParameter使用示例
Feb 26 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
JS实现支持多选的遍历下拉列表代码
Aug 20 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
Sep 15 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
Jan 28 Javascript
jQuery实现日期联动效果实例
Jul 26 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 Javascript
Vue.js对象转换实例
Jun 07 Javascript
vuex实现数据状态持久化
Nov 11 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
Aug 06 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执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
Python写的一个简单监控系统
2015/06/19 Python
Python2包含中文报错的解决方法
2018/07/09 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
Melissa香港官网:MDreams
2016/07/01 全球购物
集体备课反思
2014/02/12 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
整改报告怎么写
2014/11/06 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
2015公司年度工作总结
2015/05/14 职场文书
运动会广播稿100字
2015/08/19 职场文书