文本和外观绑定器

“visible”绑定

该绑定主要用来让我们通过监控属性可以控制html文档的显示,只要绑定的监控属性为false、0、null或者undefined则隐藏该标签,否则显示。比如下面的示例:

 <span data-bind="visible:visibleState">显示了</span>
<div>
<button type="button" data-bind="click:show">出现吧,我的皮卡丘</button>
<button type="button" data-bind="click:hide">滚粗吧,你!</button>
</div> <script type="text/javascript"> var appViewModel = function () {
this.visibleState = ko.observable(false);
this.show = function () {
this.visibleState(true);
};
this.hide = function () {
this.visibleState(false);
}
} ko.applyBindings(new appViewModel());
</script>

默认是不显示的,当点击出现按钮设置visibleState的值为true,因为ko会自动更新。所以对应的标签也就显示了,相反我们点击另一个按钮,则标签消失。这仅仅只是通过监控属性来控制,我们也可以使用表达式,我们将上面的代码改写:

 <span data-bind="visible:visibleState() == true">显示了</span>

我们直接在data-bind中写了判断语句,当然这是可以的。最后效果还是跟之前的一样。

“text”绑定

前面我们一直在使用这个绑定,所以这里笔者就不把那些重复的东西继续介绍了,直接介绍我们没有使用过的语法,在前面的使用过程中我们一直都是直接将监控属性显示到对应标签中,其实我们可以在标签文本的指定位置显示,比如下面的代码:

 <ul data-bind="foreach:datalist" >
<li>value<!--ko text:value--><!--/ko--></li>
</ul> <script type="text/javascript"> var appViewModel = function () {
this.datalist = ko.observableArray([{ "value": 1 }, { "value": 2 }, { "value": 3 }]);
} ko.applyBindings(new appViewModel());
</script>

我们将可以看到如下的结果:

“html”绑定

其实这个绑定跟text差不多,都是设置标签的内容,但是如果我们的监控属性中存在标签,则就存在意义了,因为text会将我们的标签转义输出,而html则不会,比如下面的示例:

 <div data-bind="html: htmlText" >

 </div>

     <script type="text/javascript">

         var appViewModel = function () {
this.htmlText = ko.observable("<h1>哈哈,我们又见面了</h1>");
} ko.applyBindings(new appViewModel());
</script>

最终的效果图如下所示:

“css”绑定

其实这个属性一开始我会认为可以设置style,其实不相干,它只是用来控制class使用哪些样式的,第一种方式是直接通过监控属性赋样式,比如下面这种方式:

 <style type="text/css">
.test1 {
background-color: red;
} .test2 {
background-color: green;
}
</style> <div data-bind="css: cssName">
我会变色
</div>
<div>
<button type="button" data-bind="click: changeTest1">我变</button>
<button type="button" data-bind="click: changeTest2">我再变</button>
</div> <script type="text/javascript"> var appViewModel = function () {
this.cssName = ko.observable("");
this.changeTest1 = function () {
this.cssName("test1");
};
this.changeTest2 = function () {
this.cssName("test2");
};
} ko.applyBindings(new appViewModel());
</script>

一开始默认是没有颜色的,当我们点击不同的按钮后可以看到这个div会切换不同的背景色,这些都是通过ko来实现的,当然我们也可以不用这种方式,而是通过表达式去控制,比如下面这种方式:

 <div data-bind="css:{ test1:cssName() == 'test1',test2:cssName() == 'test2'}">
我会变色
</div>

虽然换成了表达式的形式,但是最终的效果跟上面的是完全一样的,读者可以根据自己的实际情况来选择。

“style”绑定

这个属性必须是控制style的了,这里我们将上面的示例改写:

 <div data-bind="style: { backgroundColor: cssName() }">
我会变色
</div>
<div>
<button type="button" data-bind="click: changeTest1">我变</button>
<button type="button" data-bind="click: changeTest2">我再变</button>
</div> <script type="text/javascript"> var appViewModel = function () {
this.cssName = ko.observable("");
this.changeTest1 = function () {
this.cssName("red");
};
this.changeTest2 = function () {
this.cssName("green");
};
} ko.applyBindings(new appViewModel());
</script>

“attr”绑定

有了这个就可以尽情的修改标签中的任何属性了,笔者再次就举一个关于切换a标签的href值,代码如下:

 <a data-bind="attr:{href:doHref}">快点我</a>
<div>
<button type="button" data-bind="click:changeTest1">换地址1</button>
<button type="button" data-bind="click:changeTest2">换地址2</button>
</div> <script type="text/javascript"> var appViewModel = function () {
this.doHref = ko.observable("");
this.changeTest1 = function () {
this.doHref("http://www.baidu.com");
};
this.changeTest2 = function () {
this.doHref("http://www.cnblogs.com/");
};
} ko.applyBindings(new appViewModel());
</script>

具体效果,copy代码走一遍就知道了。

Knockout学习之文本和外观绑定器的更多相关文章

  1. KnockoutJS(4)-控制文本和外观绑定

    控制文本和外观绑定 依赖关系:除了Knockout核心库之外,无依赖关系. 类别 目的 Visible绑定 Visible绑定通过绑定一个值来确定DOM元素显示或隐藏 Text绑定 Text绑定主要是 ...

  2. (二)Knockout 文本与外观绑定

    Visible Visible binding会依据绑定的数据来决定相应的DOM元素是否隐藏,hidden或visible. 我们首先在js文件部分定义一个view model,这里我创建的是一个ob ...

  3. knockoutJS学习笔记05:控制文本和外观绑定

    测试数据: function Person(name,age){ var self = this; self.name = ko.observable(name); self.age = ko.obs ...

  4. knockout学习笔记目录

    关于knockout学习系列的文章已经写完,这里主要是做个总结,并且将目录罗列出来,方便查看.欢迎各位大神拍砖和讨论. 总结 kncokout是一个轻量级的UI类库,通过MVVM模式使前端的UI简单话 ...

  5. Knockout学习之模板绑定器

    模板绑定器 如今页面结构越来越复杂,仅仅依靠foreach已经不足以我们的使用,这个时候我们就需要模板的存在,模板的优点自然很多,首先会让页面整洁,同时修改起来也可以方面的定位,最重要的是ko可以条件 ...

  6. Knockout学习之表单绑定器(下)

    “hasFocus”绑定 hasFocus绑定器会将DOM元素的焦点状态与视图模型中的属性相关联,当你设置视图模型中关联的属性为true或false后,将能够设置关键的DOM元素是否获得焦点. 比如下 ...

  7. Knockout学习之表单绑定器(上)

    表单绑定器 “click”绑定 Click 绑定器可以将javascript函数绑定到指定的dom元素,并且再该元素被点击时将触发绑定的函数,大多数情况下都会使用button.input和a元素,当然 ...

  8. Knockout学习之控制流绑定器

    控制流绑定器 “foreach”绑定 顾名思义,通过该绑定我们就可以将监控数组循环输出到页面中去了,当然我们还是先来段简单的示例,仅仅只是输出监控数组: <ul data-bind=" ...

  9. C++11 学习笔记 std::function和bind绑定器

    C++11 学习笔记 std::function和bind绑定器 一.std::function C++中的可调用对象虽然具有比较统一操作形式(除了类成员指针之外,都是后面加括号进行调用),但定义方法 ...

随机推荐

  1. [Android Pro] ESP和EBP 栈顶指针和栈底指针

    cp:  http://blog.csdn.net/hutao1101175783/article/details/40128587 (1)ESP:栈指针寄存器(extended stack poin ...

  2. 如何选择JAVA培训机构,兼议什么样的人适合培训机构

    首先,利益相关,本人就是培训机构创办者兼讲师,但这不妨碍我对此发表看法. 我们先来看什么样的人适合培训机构?要回答这个问题,需要先换个角度.这个角度就是,你学习一门语言的动机是什么?99%的人的回答是 ...

  3. ubuntu下如何批量修改文件后缀名

    正确的方法是: 在命令行中输入   rename   's/\.JPG/.jpg/'    *.JPG [注意] 在单引号中的最后一个'/'符号不能少! 意思是:把当前文件夹下的所有 .JPG文件 替 ...

  4. [转]redis配置文件redis.conf的详细说明

    转自: http://www.sufeinet.com/thread-8047-1-1.html # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格 ...

  5. 指定文件兼容性模式 < meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />的意义

    X-UA-Compatible是神马? X-UA-Compatible是IE8的一个专有<meta>属性,它告诉IE8采用何种IE版本去渲染网页,在html的<head>标签中 ...

  6. String hashCode 方法为什么选择数字31作为乘子

    1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 hashCode 的实现,发现并不是很复杂.但是我从源码中发现了一个奇怪的数字,也就是本文的主 ...

  7. 查看sql执行的情况

    今天同事让看一个sql,无意中学到一个查看sql执行情况的命令,以前都是傻傻的等的,今后不用了 SELECT percent_complete FROM sys.dm_exec_requests

  8. [leetcode]N-Queens II @ Python

    原题地址:https://oj.leetcode.com/problems/n-queens-ii/ 题意:和N-Queens这道题其实是一样的,只不过这次要求返回的时N皇后的解的个数的问题. 解题思 ...

  9. javascript对象constructor属性

    概述 返回一个指向创建了该对象原型的函数引用.需要注意的是,该属性的值是那个函数本身,而不是一个包含函数名称的字符串.对于原始值(如1,true 或 "test"),该属性为只读. ...

  10. wifidog接口文档(转)

    目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...