knockout更新列表中的某条数据,knockout.js绑定数组时更新其中一条数据
knockout是一款前端实现MVVM的JS框架,仅knockout.js一个47kb的文件,相当实用,做前端无刷新页面,快速实现JS与HTML数据交互。
knockout目前最新版:knockout-3.1.0.js
关于knockout可以去官网学习,官网内容很丰富,讲的很详细,可在线学习
knockout官网:http://knockoutjs.com/
本文主要讲官网没有提到的更新列表中的数据,绑定列表时,其中某条数据发生了变化页面无法及时刷新,其实官方没有提供刷新功能,于是我们用了一点小技巧来实现数据更新后刷新,而不用重新绑定整个列表:
<body>
<div data-bind="foreach:datas">
<p>
<span data-bind="text:n"></span> :
<span data-bind="text:a"></span>
<button data-bind="click:$parent.click">换</button>
</p>
</div>
</body> <script>
function ViewModel() {
var self = this;
this.datas = ko.observableArray([
{ n: "ad", a: "yes" },
{ n: "zs", a: "no" },
{ n: "ls", a: "no" }
]);
self.click = function () {
//拷贝当前点击对象到tmp,更改tmp需要更新的值,将this替换为tmp
var tmp = this.clone();
tmp.a = tmp.a == "yes" ? "no" : "yes";
self.datas.replace(this, tmp);
}
};
ko.applyBindings(new ViewModel()); //克隆对象
Object.prototype.clone = function () {
var obj = {};
for (var p in this)
obj[p] = this[p];
return obj;
};
</script>
这样就可以实现刷新。
原理就是将要更新的对象拷贝副本,更新副本,再调用replace方法将要更新的对象替换为副本对象。replace方法是官方API提供的,一旦调用成功就会刷新页面。
knockout更新列表中的某条数据,knockout.js绑定数组时更新其中一条数据的更多相关文章
- sql 更新列表中最老的一条数据
今天组长给个任务说要给摄像头触发一个列表.让缓存5条数据,每次摄像头触发更新一条,丢掉最老的一条数据.原来的update是直接更新掉一条,没带缓存的.然后搞了个sql语句,是这样的: UPDATE C ...
- 常用JS效果 需要时更新。。。
1.手风琴效果 JS: $(function() { var aMenuOneLi = $(".menu-one > li"); var aMenuTwo = ...
- Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件
做个项目使用jquery easyui来做前端,也许是对此不是很熟悉,总是发现一些不可理解的事件. 主要源代码如下: <script type="text/javascript&qu ...
- Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效
解决方案: 使用checkedValue和checked 组合,如下代码. <div><input type="radio" name="flavorG ...
- js 小数计算时出现多余的数据
根据资料显示:是由于十进制换算成二进制,处理后,再由二进制换算成十进制时,造成的误差. 得出:所以(0.1+0.2)!=0.3 而是=0.30000000000000004的结果 解决方法: 参考:h ...
- js遍历map匹配数据和js遍历数组匹配map数据
var __LocalDataCities = { list: { "010": ["北京", "BEIJING"], "0100 ...
- vue单页应用中 返回列表记住上次滚动位置、keep-alive缓存之后更新列表数据 那点事
实践场景需求 产品列表中,滚动到一定位置的时候,点击查看产品信息,后退之后,需要回到原先的滚动位置,这是常见的需求 所有页面均在router-view中,暂时使用了keep-alive来缓存所有页面, ...
- Loadrunner Vugen参数列表中数据分配方法及更新值的时间9种组合说明及验证
作为刚开始学习Loadrunner的新人,Data Assignment Method以及Update Method在相互组合之后,LR如何进行取值让我很是头疼. 于是花了一个晚上的时间认真学习官方文 ...
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
--SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...
随机推荐
- Iterator 遍历器
1.遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). 2.Iterator ...
- C# 服务器端控件
服务器端控件和客户端控件的比较? 区别:服务器端控件都会有个runat="Server"属性,这样才能够在后台对其进行设置修改,也就是在cs代码里面能对其修改设置.你做下测试 你放 ...
- sap程序下载
有时需要下载sap 中的程序 一屏一屏的拷贝非常麻烦 这里是在网上找的的一个下载工具 实际就是一个sap程序 建立好sap程序 把代码拷贝进去 在参数处输入程序名字 和下载位置 F8运 ...
- Luogu1829 JZPTAB
JZPTAB 求\(\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\) \(=\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{\gcd(i,j)}\) 枚举gcd ...
- CF796D Police Stations 思维
Inzane finally found Zane with a lot of money to spare, so they together decided to establish a coun ...
- PAT天梯赛 L1-049 天梯赛座位分配
题目链接:点击打开链接 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] ...
- linux上传与下载
首先必须安装xshell这个工具 使用xshell来操作服务非常方便,传文件也比较方便.就是使用rz,sz首先,服务器要安装了rz,szyum install lrzsz当然你的本地windows主机 ...
- 解决SharePoint密码更新后,创建Web Application 失败
问题在sharepoint central administration中通过Configuration Wizards来创建一个web application,出现如下错误: The passwor ...
- Applese 的毒气炸弹(最小生成树)
链接:https://ac.nowcoder.com/acm/contest/330/G 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 2015苏州大学ACM-ICPC集训队选拔赛(1) 1006
取金币 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submissio ...