knockoutjs -- if 绑定
参考:http://knockoutjs.com/documentation/if-binding.html
If 绑定用来控制一部分html标签是否生成在DOM树中(html标签有data-bind属性)。只有if的条件表达式等于true(或者是类似true的值,如非null的对象,非空字符串),那么对应的html才会被输出,否则不会被输出到客户端。
If绑定和visible绑定类似,不同之处在于:对于visible绑定,包含的html标签内容一直会存在在DOM树中,它只是用css来控制这些元素时候显示。而对于if绑定,它是物理的往DOM树中增加或者移除那部分html标签。
例子:用if绑定来根据checkbox的值动态增加或者移除html片段
- View:
- <label><input type="checkbox" data-bind="checked: displayMessage" /> Display message</label>
- <div data-bind="if: displayMessage">Here is a message. Astonishing.</div>
- <script>
- // View model:
- ko.applyBindings({
- displayMessage: ko.observable(false)
- });
- </script>
if 绑定参数:
- 用来计算的表达式。如果表达式的值为true(或者类似true的值),那么包含的html内容就会被输出到DOM树中,包含html内容中的任何data-bind属性都会被应用。如果表达式的值为false,那么包含的html内容就会被从DOM树中移除,同时包含的任何data-bind属性也不会被应用。
- 表达式包含观察者变量。如果表达式包含任何一个观察者变量,那么在变量值发生变化时,表达式都会被重新计算。对应的html内容就会根据计算的结果动态地加到DOM树中,或者从DOM树中移除。当增加部分的html内容中包含data-bind属性,那么这些绑定都会被启用
没有容器元素下使用if绑定:
有时候,可能需要再没有任何外部容器元素的情况下,使用if绑定来控制html片段的增加或者移除。譬如如下例子,想要动态控制ul下第二个li。如果把if放到ul里面,那么第一个li也会被影响到;同时也不能用任何元素来包住li,因为html不允许这么做。
- <ul>
- <li>This item always appears</li>
- <li>I want to make this item present/absent dynamically</li>
- </ul>
这种情况下,可以使用基于html注释标签的无容器控制流语法:如下
- <ul>
- <li>This item always appears</li>
- <!-- ko if: someExpressionGoesHere -->
- <li>I want to make this item present/absent dynamically</li>
- <!-- /ko -->
- </ul>
用<!-- ko --> 和 <!-- /ko --> 注释这样的一对html标签,来定义一个“虚拟的元素”来包含html内容。Knockout会理解这个虚拟元素的语法并正确处理
knockoutjs -- if 绑定的更多相关文章
- knockoutjs with绑定导致unobtrusive validation失效的问题
如果最初的时候with绑定的对象是空的,那么with绑定内部的unobtrusive validation规则在提交的时候无法生效,无法进行验证. 解决办法: 在提交的时候(或者with绑定的对象非空 ...
- KnockoutJS(3)-绑定语法
绑定语法大致分为2种: 1. 数据绑定(data-bind syntax) 2. 绑定上下文(Binding Context) 下面针对这2中绑定语法分别介绍一下 1. 绑定上下文(Binding C ...
- KnockoutJS学习笔记10:KonckoutJS foreach绑定
KnockoutJS foreach绑定用来处理数组,通常用来将一个数组绑定到一个列表或者table中.在foreach绑定中,我们可以使用if.with等嵌套绑定. 示例代码: <tabl ...
- [后端人员耍前端系列]KnockoutJs篇:使用WebApi+Bootstrap+KnockoutJs打造单页面程序
一.前言 在前一个专题快速介绍了KnockoutJs相关知识点,也写了一些简单例子,希望通过这些例子大家可以快速入门KnockoutJs.为了让大家可以清楚地看到KnockoutJs在实际项目中的应用 ...
- KnockoutJS-模板绑定
对于knockoutJS来讲,模板绑定和Mapping插件绑定是十分重要的功能,虽然模板绑定在我工作中用的及其少,但模板绑定的重要性不可忽视,在其他前端框架中,如Angular.Vue等等,模板存在的 ...
- KnockJs 绑定语法
按照汤姆大叔的教程,学习了KnockJs相关知识,练习一下KnockoutJs的绑定语法. 相关的教程大家可以去看 汤姆大叔的博客. 练习代码下载 由于没有环境,代码直接用记事本写的,可能比较乱,仅作 ...
- Knockout.js之初印象
最近在学Knockout.js,想要把看到的东西用blog记录下来. Knockout.js是一个MVVM的框架,突然想起之前有人问我哪些是MVVM框架?我回答了angular.js和bootstra ...
- KnockoutJS中父元素有click绑定引起checked绑定时失效
KnockoutJS中的checked绑定如果父元素有click绑定,会出现状态点击没反应,实际KO的值已经变化的情况. 这种情况下应该在checked绑定的元素上除了阻止事件冒泡,另外还需要额外加上 ...
- Knockoutjs 实践入门 (1) 属性绑定
1 是什么? 使用MVVM模式的简单,动态的Javascript UI. 2 优点 声明式绑定 UI 自动更新 依赖追踪 模板化 3 如何使用 & ...
随机推荐
- 利用yii2分页插件,成对取出数组数据
数组太大不好处理,切割出来处理 $ids = [1, 2, 3, 4, 5, 6, 7, 8, 9]; $count = count($ids);$size = 2; $pages = new Pag ...
- [转]String.Replace 和 String.ReplaceAll 的区别
JAVA 中的 replace replaceAll 问题: 测试code System.out.println("1234567890abcdef -----> "+&qu ...
- Swift 自定义打印方法
Swift 自定义打印方法 代码如下 // MARK:- 自定义打印方法 func MLLog<T>(_ message : T, file : String = #file, funcN ...
- Shell基础学习(一) Shell简介
Shell是什么? Shell是C语言编写的一种程序,用于用户与linux操作系统交互:Shell既是命令语言,又是程序设计语言. Shell脚本是什么? Shell脚本是用Shell编写的脚本程序. ...
- List与ArrayList的区别
http://www.cnblogs.com/aisiteru/articles/1151874.html List是一个接口,而ListArray是一个类. ListArray继承并实现了List. ...
- setTimeout递归调用跳转页面
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- extjs grid数据改变后刷新的实现
做了一个编辑extjs grid记录的窗体,但更改数据后,怎么重新刷新grid让数据显示呢? 做了半天的尝试,其实到最后只需一句话,faint:-) this.store.reload(); 不用加任 ...
- Digital controller compensates analog controller
Emerging digital ICs for power control lack basic features, such as the built-in gate drive and curr ...
- MySQL删除数据Delete与Truncate语句使用比较
在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在 空mysqll表内容常见的有两种方法:一种d ...
- 《转》OpenStack Ceilometer 安装配置和API说明
1.概述 Ceilometer是OpenStack中的一个子项目.它像一个漏斗一样.能把OpenStack内部发生的差点儿全部的事件都收集起来,然后为计费和监控以及其他服务提供数据支撑.Ceilome ...