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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
js post方式传递提交的实现代码
May 31 Javascript
在JavaScript中构建ArrayList示例代码
Sep 17 Javascript
jQuery实现设置、移除文本框默认值功能
Jan 13 Javascript
js插件YprogressBar实现漂亮的进度条效果
Apr 20 Javascript
JQuery的attr 与 val区别
Jun 12 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
Vee-Validate的使用方法详解
Sep 22 Javascript
vue自定义底部导航栏Tabbar的实现代码
Sep 03 Javascript
js实现前面自动补全位数的方法
Oct 10 Javascript
Node.js从字符串生成文件流的实现方法
Aug 18 Javascript
原生js实现的观察者和订阅者模式简单示例
Apr 18 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
js中eval详解
2012/03/30 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
python获取文件扩展名的方法
2015/07/06 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
Python笔记之facade模式
2019/11/20 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
给医务人员表扬信
2014/01/12 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
财务工作失职检讨书
2014/11/21 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
如何利用python创作字符画
2022/06/25 Python