2. text绑定

目的

text绑定把传入的参数通过关联的DOM元素来显示文本值。

通常这对像<span><em>标签等使用,但技术上你可以对任何元素使用该绑定。

例子

Today's message is: <span data-bind="text: myMessage"></span>

<script type="text/javascript">
var viewModel = {
myMessage: ko.observable() // Initially blank
};
viewModel.myMessage("Hello, world!"); // Text appears
</script>

参数

  • 主参数

    • KO把你的参数值设置为元素文本节点的内容。任何之前的内容会被重写。
    • 如果参数是监控对象,在值改变时,元素文本会自动更新。如果参数不是监控对象,则只在第一次会更新。
    • 你如果输入一些数字或字符串(即传入一个对象或数组),显示内容等同于 yourParameter.toString()的结果。
  • 额外参数

注意事项 1:使用函数或表达式确定文本内容

如果你想通过程序确定文本内容,一个可选的方式是创建一个计算监控,使用求值函数在其中写自定义逻辑来确定显示内容。

比如:

The item is <span data-bind="text: priceRating"></span> today.

<script type="text/javascript">
var viewModel = {
price: ko.observable(24.95)
};
viewModel.priceRating = ko.pureComputed(function() {
return this.price() > 50 ? "expensive" : "affordable";
}, viewModel);
</script>

现在当价格改变时,文本值会在expensiveaffordable之间切换。

另外,如果你要实现的功能像下面一样简单,你不需要创建一个计算监控,你可以传入一个javascript表达式给text绑定,比如:

The item is <span data-bind="text: price() > 50 ? 'expensive' : 'affordable'"></span> today.

两个的结果是一样的,但是不需要priceRating 计算监控。

注意事项 2:HTML 编码

因为使用文本节点来绑定你的文本值,所以设置任何字符串都是安全的,而不用担心html或脚本注入。比如,你像下面这样写:

viewModel.myMessage("<i>Hello, world!</i>");

它不会呈现会斜体文本,即不会进行解析,只会原文呈现。

如果你需要用这种方式设置HTML内容,请看HTML绑定

注意事项 3 :使用“text”绑定而不需要容器元素

有时候你想要使用KO设置文本内容而不想添加一个额外的标签用于text绑定。比如,你不允许在option标签里添加其他元素标签,所以如下的写法无效。

<select data-bind="foreach: items">
<option>Item <span data-bind="text: name"></span></option>
</select>

对于这种情况,你可以使用无容器语法,该语法基于注释标签。

<select data-bind="foreach: items">
<option>Item <!--ko text: name--><!--/ko--></option>
</select>

<!--ko--> and <!--/ko-->作为开始/结束标记,定义了一个“虚拟元素”包含在里面。KO能解析这种虚拟元素语法,并且绑定值就像真有容器元素一样。

注意事项 4 :关于IE 6 的空格怪异模式

IE 6有一个奇怪的现象,有时会忽略空格,如下面闭合的空span标签所示。KO没有什么好的方法可以解决,如果你像这样写:

Welcome, <span data-bind="text: userName"></span> to our web site.

IE 6 会渲染为在to our web site之前无空格,你可以通过在span标签里插入任何内容来避免这个问题,比如:

Welcome, <span data-bind="text: userName">&nbsp;</span> to our web site.

其他浏览器,包括新版的IE都不会有这种情况。

依赖

只有核心KO库

Knockout v3.4.0 中文版教程-11-控制文本内容和外观-text绑定的更多相关文章

  1. Knockout v3.4.0 中文版教程-14-控制文本内容和外观-style绑定

    5. style绑定 目的 style绑定用来给关联的DOM元素添加或移除一个或多个样式值.在如下情况很有用,比如,当某些值为负时,高亮显示,或者设置容器元素的宽度来匹配数值的改变. (注意:如果你不 ...

  2. Knockout v3.4.0 中文版教程-13-控制文本内容和外观-css绑定

    4. css绑定 目的 css绑定可以给关联的DOM元素添加或移除一个或多个CSS类.该绑定很有用,比如,当一些值为负数时高亮这些值为红色. (注意:如果你不想使用一个CSS类选择器来附加样式而想直接 ...

  3. Knockout v3.4.0 中文版教程-15-控制文本内容和外观-attr绑定

    6. attr绑定 目的 attr绑定可以给关联DOM元素的任何属性赋值.这个绑定很棒,比如,当你想要设置通过视图模型给元素的title属性.img标签的src属性或超链接的href值,当视图模型对应 ...

  4. Knockout v3.4.0 中文版教程-12-控制文本内容和外观-html绑定

    3. html绑定 目的 html绑定会使关联的DOM元素显示你参数指定的html内容. 当你的视图模型里面的值是HTML标记字符串,而你想要呈现它,这时候用html绑定特别合适. 例子 <di ...

  5. Knockout v3.4.0 中文版教程-10-绑定-控制文本内容和外观-visible绑定

    4.绑定 1. 控制文本内容和外观 1. visible绑定 目的 visible绑定可以根据你传入绑定的值控制关联的DOM元素显示或隐藏. 例子 <div data-bind="vi ...

  6. Knockout v3.4.0 中文版教程-16-控制流-foreach绑定

    2. 控制流 1. foreach绑定 目的 foreach绑定会遍历一个数组,为每个数组项生成重复的元素标记结构并做关联.这在渲染列表或表格的时候特别有用. 假设你的数组是一个监控数组,之后无论你进 ...

  7. Knockout v3.4.0 中文版教程-2-监控-通过监控创建视图模型(上)

    2. 监控 1.通过监控创建视图模型 1. 监控 Knockout是基于以下三个核心特性: 监控和依赖跟踪 声明式绑定 模板 在本节,你将第一次了解这三个特性,在这之前,我们先来了解以下MVVM模式和 ...

  8. Knockout v3.4.0 中文版教程-6-计算监控-可写的计算监控

    2.可写的计算监控 初学者可能想要跳过本节 - 可写的计算监控是相当高级的部分,在大多数情况下不是必需的. 通常,计算监控是一个通过其他监控值计算出的值,因此是只读的. 令人惊讶的是,可以使计算监控值 ...

  9. Knockout v3.4.0 中文版教程-1-入门和安装

    英文原版教程:http://knockoutjs.com/documentation/introduction.html 注:此教程根据英文原版翻译,仅作练习,如有不足或错误,请指正 说明: 对原文中 ...

随机推荐

  1. Executor等系列概念介绍

    这里对几个常见的的名词进行介绍 Executor 这是个接口,只声明了一个方法—— public interface Executor { void execute(Runnable command) ...

  2. vue.js2.0实战填坑记录

    访https://github.com/bailicangdu/vue2-elm的PC商城 在创建的 router 对象中,如果不配置 mode,就会使用默认的 hash 模式,该模式下会将路径格式化 ...

  3. Ubuntu系统下安装字体和切换默认字体的方法

    参考链接:http://my.oschina.net/itblog/blog/278566 打开Ubuntu的软件中心,搜索:tweak,安装[Unity Tweak Tool]这款软件,如图(由于我 ...

  4. StarUML安装与Win7不兼容解决

    最近在学习建模工具(StarUML)发现 其他功能一切正常 但是无法显示代码导出功能, 正常界面如下: 我的安装确没有导出功能缺少C++,C# ,Java等导出功能 解决办法:     到StarUM ...

  5. 模拟一次CSRF(跨站请求伪造)例子,适合新手

    GET请求伪造 有一个论坛网站,网站有一个可以关注用户的接口,但是必须登录的用户才可以关注其他用户. 这个网站的网站是www.a.com 有一天有一个程序员想提高自己的知名度,决定利用CSRF让大家关 ...

  6. Java文件操作系列[1]——PDFBox实现分页提取PDF文本

    需求:用java分页提取PDF文本. PDFBox是一个很好的可以满足上述需求的开源工具. 1.PDF文档结构 要解析PDF文本,我们首先要了解PDF文件的结构. 关于PDF文档,最重要的几点: 一, ...

  7. 清理ThreadLocal

    在我很多的课程里(master.concurrency.xj-conc-j8),我经常提起ThreadLocal.它经常受到我严厉的指责要尽可能的避免使用.ThreadLocal是为了那些使用完就销毁 ...

  8. 洛谷 P1165 日志分析

    题目描述 M 海运公司最近要对旗下仓库的货物进出情况进行统计.目前他们所拥有的唯一记录就是一个记录集装箱进出情况的日志.该日志记录了两类操作:第一类操作为集装箱入库操作,以及该次入库的集装箱重量:第二 ...

  9. COGS 2688. 鱼的感恩

    ★   输入文件:fool.in   输出文件:fool.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 从前有一个渔夫抓到了一条特别的鱼,放走了. 渔夫再次抓到了这条 ...

  10. SQLite-表达式

    SQLite -表达式 一个表达式是一个或多个值的组合,运算符和SQL函数,评价一个值. SQL表达式就像公式和都写在查询语言.您还可以使用为特定的数据集查询数据库. 语法: 考虑到SELECT语句的 ...