Knockout.Js官网学习(text绑定)

前言

text 绑定到DOM元素上,使得该元素显示的文本值为你绑定的参数。该绑定在显示<span>或者<em>上非常有用,但是你可以用在任何元素上。

简单绑定

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

<script type="text/javascript" src="~/Scripts/knockout-2.3.0.debug.js"></script>   
<script type="text/javascript">    
    var viewModel = {        
        myMessage: ko.observable()     
    };
    viewModel.myMessage("Hello, world!");
    ko.applyBindings(viewModel);
</script>
复制代码

    KO将参数值会设置在元素的innerText (IE)或textContent(Firefox和其它相似浏览器)属性上。原来的文本将会被覆盖。

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

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

使用函数或者表达式来决定text值

 继续在上面的ViewModel中添加一个属性,并且添加一个依赖监控属性

price: ko.observable(24.95)
    viewModel.priceRating = ko.dependentObservable(
        function () {
         return this.price() > 50 ? "expensive" : "affordable";
        }, viewModel);

添加一个UI页面元素进行绑定

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

现在,text文本将在“expensive”和“affordable”之间替换,取决于价格怎么改变。

关于HTML encoding

因为该绑定是设置元素的innerText或textContent (而不是innerHTML),所以它是安全的,没有HTML或者脚本注入的风险。例如:如果你编写如下代码:

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

 它不会显示斜体字,而是原样输出标签。如果你需要显示HTML内容,请参考html绑定.

关于IE 6的白空格whitespace

IE6有个奇怪的问题,如果 span里有空格的话,它将自动变成一个空的span。如果你想编写如下的代码的话,那Knockout将不起任何作用:

转载于:https://www.cnblogs.com/zxbzl/p/6004085.html

Knockout.js 是一个基于 MVVM 架构的 JavaScript 框架,它可以帮助我们实现数据绑定、模板渲染、事件绑定等功能。要显示上传文件的进度,我们可以使用 XMLHttpRequest 对象来发送文件,并使用 Knockout.js 来更新进度条的。 首先,我们需要定义一个 ViewModel,用来绑定页面上的元素和数据: ``` function ViewModel() { var self = this; self.uploadProgress = ko.observable(0); self.uploadFile = function() { var fileInput = document.getElementById("fileInput"); var file = fileInput.files[0]; var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", function(event) { if (event.lengthComputable) { var percentComplete = event.loaded / event.total * 100; self.uploadProgress(percentComplete); } }, false); xhr.open("POST", "/upload"); xhr.send(file); }; } ko.applyBindings(new ViewModel()); ``` 在这个 ViewModel 中,我们定义了一个 uploadProgress 可观察的属性,它用来绑定页面上的进度条。我们还定义了一个 uploadFile 方法,用来上传文件。在上传文件的过程中,我们使用 XMLHttpRequest 的 upload 事件来监听文件上传的进度,如果进度发生变化,我们就更新 uploadProgress 的,从而更新页面上的进度条。 在 HTML 代码中,我们可以使用 Knockout.js 的数据绑定语法来绑定 uploadProgress 属性,以显示进度条: ``` <input type="file" id="fileInput"> <button data-bind="click: uploadFile">Upload File</button> <div class="progress"> <div class="progress-bar" role="progressbar" style="width: 0%;" data-bind="style: { width: uploadProgress() + '%' }"> <span data-bind="text: uploadProgress() + '%'"></span> </div> </div> ``` 在这个 HTML 代码中,我们使用了 Bootstrap 的进度条样式,并使用了 Knockout.js 的数据绑定语法来绑定 uploadProgress 属性。当 uploadProgress 的发生变化时,进度条的宽度和文本也会相应地更新。 总结一下,要显示上传文件的进度,我们可以使用 XMLHttpRequest 对象来发送文件,并使用 Knockout.js 来更新进度条的。我们可以定义一个 ViewModel,用来绑定页面上的元素和数据,定义一个 uploadFile 方法,用来上传文件,使用 XMLHttpRequest 的 upload 事件来监听文件上传的进度,如果进度发生变化,就更新 uploadProgress 的,从而更新页面上的进度条。在 HTML 代码中,我们可以使用 Knockout.js 的数据绑定语法来绑定 uploadProgress 属性,以显示进度条。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值