当前位置: 首页 > 编程笔记 >

KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定

云捷
2023-03-14
本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定,包括了KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定的使用技巧和注意事项,需要的朋友参考一下

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绑定,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • if绑定 if绑定应用在页面元素中,并通过表达式判断是否为元素添加子元素的绑定。if绑定在功能上非常像visible绑定,但在实现上却有很大的不同。visible绑定是为元素添加css样式来控制元素是否显示,if绑定是控制元素的字元素,如果表达式为true,则为元素添加子元素,否则清空子元素。 示例代码: //.W片段 <label> <input type="checkbox" bind-c

  • 本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流foreach绑定,包括了KnockoutJS 3.X API 第四章之数据控制流foreach绑定的使用技巧和注意事项,需要的朋友参考一下 foreach绑定 foreach绑定主要用于循环展示监控数组属性中的每一个元素,一般用于table标签中 假设你有一个监控属性数组,每当您添加,删除或重新排序数组项时,绑定将有效地更新U

  • 本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流with绑定,包括了KnockoutJS 3.X API 第四章之数据控制流with绑定的使用技巧和注意事项,需要的朋友参考一下 with绑定的目的 使用with绑定的格式为data-bind=”with:attribute”,使用with绑定会将其后所跟的属性看作一个新的上下文进行绑定。with绑定内部的所有元素将受到该上下文

  • 本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流component绑定,包括了KnockoutJS 3.X API 第四章之数据控制流component绑定的使用技巧和注意事项,需要的朋友参考一下 一个例子 UI源码: 视图模型源码: 这只是一个非常简单的例子,在开发中,一般都是将View Model和Template写成单独外部文件,然后通过ko的components.re

  • 本文向大家介绍KnockoutJS 3.X API 第四章之click绑定,包括了KnockoutJS 3.X API 第四章之click绑定的使用技巧和注意事项,需要的朋友参考一下 目的 click绑定主要作用是用于DOM元素被点击时调用相关JS函数。最常见用于button、input、a元素。 例如: 源码: 如上述例子,没点过button被点击时都会触发incrementClickCount

  • 本文向大家介绍KnockoutJS 3.X API 第四章之表单value绑定,包括了KnockoutJS 3.X API 第四章之表单value绑定的使用技巧和注意事项,需要的朋友参考一下 Knockout是一个以数据模型(data model)为基础的能够帮助你创建富文本,响应显示和编辑用户界面的JavaScript类库。任何时候如果你的UI需要自动更新(比如:更新依赖于用户的行为或者外部数据