Html绑定javascript
html绑定到DOM元素上,使得该元素显示的HTML值为你绑定的参数。若是在你的view model里声明HTML标记而且render的话,那很是有用。css
简单示例html
<div data-bind="html: details"></div> <script type="text/javascript"> var viewModel = { details: ko.observable() }; ko.applyBindings(viewModel); viewModel.details("<em>For further details, view the report <a href='report.html'>here</a>.</em>"); </script>
这样Html 的EM标签就会显示于此java
KO设置该参数值到元素的innerHTML属性上,元素以前的内容将被覆盖。数组
若是参数是监控属性observable的,那元素的内容将根据参数值的变化而更新,若是不是,那元素的内容将只设置一次而且之后不在更新。安全
若是你传的是否是数字或者字符串(例如一个对象或者数组),那显示的文本将是yourParameter.toString()的等价内容。app
关于HTML encoding函数
由于该绑定设置元素的innerHTML,你应该注意不要使用不安全的HTML代码,由于有可能引发脚本注入攻击。若是你不确信是否安全(好比显示用户输入的内容),那你应该使用text绑定,由于这个绑定只是设置元素的text 值innerText和textContent。spa
Css绑定code
css绑定是添加或删除一个或多个CSS class到DOM元素上。 很是有用,好比当数字变成负数时高亮显示。(注:若是你不想应用CSS class而是想引用style属性的话,请参考style绑定。)
简单示例
<p style="background: gray; color: #ffffff; font-size: 18pt;">Html绑定</p>
<script type="text/javascript"> var viewModel = { details: ko.observable(), currentProfit: ko.observable(150000) }; ko.applyBindings(viewModel); viewModel.currentProfit(-50); viewModel.details("<em>For further details, view the report <a href='report.html'>here</a>.</em>"); </script>
运行后的效果为
记得还写了一个css样式
.profitWarning {
color: red;
}
该参数是一个JavaScript对象,属性是你的CSS class名称,值是比较用的true或false,用来决定是否应该使用这个CSS class。
你能够一次设置多个CSS class。例如,若是你的view model有一个叫isServre的属性,
<div data-bind="css: { profitWarning: currentProfit() < 0, majorHighlight: isSevere }">
若是参数是监控属性observable的,那随着值的变化将会自动添加或者删除该元素上的CSS class。若是不是,那CSS class将会只添加或者删除一次而且之后不在更新。
你能够使用任何JavaScript表达式或函数做为参数。KO将用它的执行结果来决定是否应用或删除CSS class。
应用的CSS class的名字不是合法的JavaScript变量命名
若是你想使用my-class class,你不能写成这样:
<div data-bind="css: { my-class: someValue }">...</div>
由于my-class不是一个合法的命名。解决方案是:在my-class两边加引号做为一个字符串使用。这是一个合法的JavaScript 对象 文字(从JSON技术规格说明来讲,你任什么时候候都应该这样使用,虽然不是必须的)。例如
<div data-bind="css: { 'my-class': someValue }">...</div>