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

控制文本和外观绑定

依赖关系:除了Knockout核心库之外,无依赖关系。


类别


目的


Visible绑定


Visible绑定通过绑定一个值来确定DOM元素显示或隐藏


Text绑定


Text绑定主要是让DOM元素显示参数值。

通常情况下,该绑定在<span>和<em>这样的元素上非常有用,而实际上你可以绑定任何元素。


html 绑定


html绑定到DOM元素上,使得该元素显示的HTML值为你绑定的参数。如果在你的view model里声明HTML标记并且render的话,那非常有用。


CSS Binding(CSS类名绑定)


css绑定是添加或删除一个或多个CSS class到DOM元素上。 非常有用,比如当数字变成负数时高亮显示。(注:如果你不想应用CSS class而是想引用style属性的话,请参考style绑定。)


Style Binding(Style属性绑定)


style绑定是添加或删除一个或多个DOM元素上的style值。比如当数字变成负数时高亮显示,或者根据数字显示对应宽度的Bar。(注:如果你不是应用style值而是应用CSS class的话,请参考CSS绑定。)


Attr Binding(attr属性绑定)


attr 绑定提供了一种方式可以设置DOM元素的任何属性值。你可以设置img的src属性,连接的href属性。使用绑定,当模型属性改变的时候,它会自动更新。

1. Visible绑定

参数

  主参数

当参数设置为一个假值(例如bool型值false、整型值0、null或者undefined)时,该绑定会设置yourElement.style.display为 none,让元素隐藏。它的优先级高于任何你在CSS中定义的隐藏样式。

当参数设置为一个真值(例如bool型值true、不等于null、Object对象或数组)时,该绑定会去掉yourElement.style.display值,让元素显示。

注意,任何你在CSS中定义的样式会立即应用生效。

如果参数是一个observable值,visible绑定使得元素的visible状态随着参数值的变化而变化。如果参数不是observable值,visible绑定仅仅会设置元素visible状态一次,以后不会再更新。

  其他参数

    无

注:使用函数或表达式来控制元素显示隐藏

你可以选择使用JavaScript函数或者表达式作为参数值。这样的话,KO将会运行你的函数或者表达式,返回的结果来控制元素显示或者隐藏。

示例

<div data-bind="visible: shouldShowMessage">
    You will see this message only when "shouldShowMessage" holds a true value.
</div>

<script type="text/javascript">
    var viewModel = {
        shouldShowMessage: ko.observable(true) // Message initially visible
    };
    viewModel.shouldShowMessage(false); // ... now it‘s hidden
    viewModel.shouldShowMessage(true); // ... now it‘s visible again
</script>

2. Text绑定

参数

  主要参数

Knockout将参数值设置为元素内容。元素之前的内容将会被覆盖。

如果参数是一个observable值,text绑定将会在值变化时更新元素text内容。如果参数不是observable值,text绑定仅仅会设置元素内容一次,以后不会再更新。

如果你传入的不是一个值或者一个字符串(比如:你传入一个对象或者数组)那么显示的文本将是yourParameter.toString()的结果。

  其他参数

    无

示例

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>

注意事项

注1:使用函数或表达式来决定text值

如果你想text值可编程化,一种选择是创建计算属性,然后在运算函数中编码决定text中显示什么。

注2:关于HTML编码

由于text绑定是利用元素的text节点属性来设置文本值,你可以很安全的设置任何内容而不用担心HTML和脚本注入风险。

注3:使用“text”而没有一个容器元素

有时你可能需要使用Knockout在不使用多余的元素的情况下通过text绑定来设置文本内容。例如,在option元素中是不允许存在其他元素的,所以下面的绑定是无法正常工作的。

注4:一个关于IE6 白空格

IE6有一个奇怪的现象,如果span有空格的话,它会变成一个空span,如果你编写以下代码,Knockout不会起任何作用。

IE6不会显示span中间的那个空格,如果你想避免这个问题,你可以在<span>中输入任意内容。

其他浏览器或者版本较新的IE浏览器不会出现这个问题。

3. html 绑定

参数

    主参数

KO设置该参数值到元素的innerHTML属性上,元素之前的内容将被覆盖。

如果参数是监控属性observable的,那元素的内容将根据参数值的变化而更新,如果不是,那元素的内容将只设置一次并且以后不在更新。

如果你传的是不是数字或者字符串(例如一个对象或者数组),那显示的文本将是yourParameter.toString()的等价内容。

其它参数

示例

<div data-bind="html: details"></div> 

<script type="text/javascript">
    var viewModel = {
        details: ko.observable() // Initially blank
    };

    viewModel.details("<em>For further details, view the report <a href=‘report.html‘>here</a>.</em>");
    // HTML content appears
</script>

注意事项

  关于HTML encoding

因为该绑定设置元素的innerHTML,你应该注意不要使用不安全的HTML代码,因为有可能引起脚本注入攻击。如果你不确信是否安全(比如显示用户输入的内容),那你应该使用text绑定,因为这个绑定只是设置元素的text 值innerText和textContent。

这个绑定的功能与text binding相对应,不同点为:

  • 控制DOM元素的innerHtml属性

不会对内容进行Html编码,你可以定义自己的html标签注入进去.

4. CSS Binding(CSS类名绑定)

参数

  主参数

该参数是一个JavaScript对象,属性是你的CSS class名称,值是比较用的true或false,用来决定是否应该使用这个CSS class。

      你可以一次设置多个CSS class。例如,如果你的view model有一个叫isServre的属性,

<div data-bind="css: { profitWarning: currentProfit() < 0, majorHighlight: isSevere }">

  非布尔值会被解析成布尔值。例如, 0和null被解析成false,21和非null对象被解析成true。

如果参数是监控属性observable的,那随着值的变化将会自动添加或者删除该元素上的CSS class。如果不是,那CSS class将会只添加或者删除一次并且以后不在更新。

你可以使用任何JavaScript表达式或函数作为参数。KO将用它的执行结果来决定是否应用或删除CSS class。

其它参数

示例

<div data-bind="css: { profitWarning: currentProfit() < 0 }">
   Profit Information
</div>

<script type="text/javascript">
    var viewModel = {
        currentProfit: ko.observable(150000)
        // Positive value, so initially we don‘t apply the "profitWarning" class
    };

    viewModel.currentProfit(-50);
    // Causes the "profitWarning" class to be applied
</script>

注意事项

  应用的CSS class的名字不是合法的JavaScript变量命名

5. Style Binding(Style属性绑定)

参数

  主参数

  该参数是一个JavaScript对象,属性是你的style的名称,值是该style需要应用的值。

  你可以一次设置多个style值。例如,如果你的view model有一个叫isServre的属性,

<div data-bind="style: { color: currentProfit() < 0 ? ‘red‘ : ‘black‘, fontWeight: isSevere() ? ‘bold‘ : ‘‘ }">...</div>

  如果参数是监控属性observable的,那随着值的变化将会自动添加或者删除该元素上的style值。如果不是,那style值将会只应用一次并且以后不在更新。

  你可以使用任何JavaScript表达式或函数作为参数。KO将用它的执行结果来决定是否应用或删除style值。

  其它参数

  无

示例

<div data-bind="style: { color: currentProfit() < 0 ? ‘red‘ : ‘black‘ }">
   Profit Information
</div>

<script type="text/javascript">
    var viewModel = {
        currentProfit: ko.observable(150000) // Positive value, so initially black
    };
    viewModel.currentProfit(-50); // Causes the DIV‘s contents to go red
</script>

注意事项

  应用的style的名字不是合法的JavaScript变量命名

6. Attr Binding(attr属性绑定)

参数

  主参数

该参数是一个JavaScript对象,属性是你的attribute名称,值是该attribute需要应用的值。

如果参数是监控属性observable的,那随着值的变化将会自动添加或者删除该元素上的attribute值。如果不是,那attribute值将会只应用一次并且以后不在更新。

其它参数

示例

<a data-bind="attr: { href: url, title: details }">
    Report
</a>

<script type="text/javascript">
    var viewModel = {
        url: ko.observable("year-end.html"),
        details: ko.observable("Report including final year-end statistics")
    };
</script>

注意事项

  应用的属性名字不是合法的JavaScript变量命名

时间: 2024-11-06 07:56:15

KnockoutJS(4)-控制文本和外观绑定的相关文章

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

测试数据: function Person(name,age){ var self = this; self.name = ko.observable(name); self.age = ko.observable(age); self.isShow = ko.observable(""); self.html = "<div>没有div</div>", self.isRed = true } var person = new Person(

Knockout学习之文本和外观绑定器

文本和外观绑定器 “visible”绑定 该绑定主要用来让我们通过监控属性可以控制html文档的显示,只要绑定的监控属性为false.0.null或者undefined则隐藏该标签,否则显示.比如下面的示例: 1 <span data-bind="visible:visibleState">显示了</span> 2 <div> 3 <button type="button" data-bind="click:sho

正则表达式控制文本框只允许填数字、负号、点号

有时候,我们需要控制文本框,只允许用户输入可以为负数的浮点值,例如:-23.563:而不允许出现23.563qq这样的值. 这里我们还是看代码吧,用正则表达式很容易就能实现以上需求: 前台页面: 1 <asp:TextBox ID="txtValueEnter" runat="server" Width="228px"></asp:TextBox> 后台页面: 1 //注意负号.点号都需要使用双个斜杠转换,单引号单个斜杠转

HTML 教程延伸阅读:改变文本的外观和含义

很多标签都可以用来改变文本的外观,并为文本关联其隐藏的含义.总地来说,这些标签可以分成两类:基于内容的样式(content-based style)和物理样式(physical style). 基于内容的样式 基于内容的样式标签会告诉浏览器它所包含的文本具有特定的含义.上下文或者用法.然后浏览器就会把与该含义.上下文或者用法一致的格式应用在文本上.请注意这里面的区别.基于内容的标签赋予含义,而不是格式化.因此,它们对于自动处理来说非常重要:计算机并不关心文档的外观如何. 因为字体样式是通过语义线

js 控制文本框只能输入中文、英文、数字等

总而言之:先在<input>里输入onkeyup="value=value.replace(/[^\X]/g,'')" 然后在(/[\X]/g,'')里的X换成你想输入的代码就可以了,中文u4E00-u9FA5,数字0-9,英文a-z\A-Z,其它符号@.点或其它符号.也可以多个,用\隔开就行了. 例如:中英文 + 数字 + @符号 + 点符号   \a-\z\A-\Z0-9\u4E00-\u9FA5\@\. 若想在文本框里不能右键弹出菜单和不能粘贴进复制的信息的话 就要在

GUI编程笔记(java)09:GUI控制文本框只能输入数字字符案例

1.首先我们看看我的需求,如下: 控制文本框只能输入数字字符 2.源代码: package cn.itcast_07; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextField; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.W

用Jquery控制文本框只能输入数字和字母

只为成功找方法,不为失败找借口! 用Jquery控制文本框只能输入数字和字母 在公司开发WinForm项目时,发现公司自主研发的textbox控件非常强大,可以实现"只能输入数字"."只能输入字母"和"只能输入数字和字母"的三种输入限制,这样就可以精确控制用户输入的内容范围,让"用户永远没有办法输入限定的内容范围之外的其他内容",也就是"用户即使想犯错误也没有机会",这种限制控件输入的方式给了我很大的启发,

CSS控制文本超出指定宽度后用省略号代替,CSS控制文本不换行

CSS控制文本超出指定宽度后用省略号代替,CSS控制文本不换行. 一般的文字截断(适用于内联与块): .text-overflow {     display:block;/*内联对象需加*/     width:31em;     word-break:keep-all;/* 不换行 */     white-space:nowrap;/* 不换行 */     overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */     text-overflow:ellipsis;

Javascript正则控制文本框只能输入整数或浮点数

这篇文章主要介绍Javascript正则如何控制文本框只能输入整数或浮点数,需要的朋友可以参考下 JS部分代码如下: view source print? 1 function CheckInputIntFloat(oInput)  2 {  3 if('' != oInput.value.replace(/\d{1,}\.{0,1}\d{0,}/,''))  4 {  5 oInput.value = oInput.value.match(/\d{1,}\.{0,1}\d{0,}/) == n