Knockout 重新绑定注意要点
function ReImport(id) { //点击按钮时调用函数名称,
var node = document.getElementById('bindingNode'); //bindingNode 为内部绑定订单子项的div或是table id,每次html(data)后会重新建立
if (node) {
$(node).unbind();
$(node).find("*").each(function () {
$(this).unbind();
});
ko.removeNode(node);//解绑
}
//http://localhost:7486/Order/EditByIndex?id=61521
$("#orderdetalis").html('');
$.get('@Url.Action("EditByIndex")', { id: id, r: Math.random() }, function (data) { //此处action中包含了<div id="bindingNode">
$("#orderdetalis").html(data); //此处orderdetails为本页面的一个div id 注意,如有错误 jquery html()方法不执行
$("#myModal").modal();
var node_new = document.getElementById('bindingNode'); //此处bindingNode因为被remove掉,必须再次查找后 绑定到对像
ko.applyBindings(obj1, node_new);
})
}
function AppViewModel() {
var self = this;
self.OrderItems = ko.observableArray([]);
self.removeOrderItem = function () {
if (confirm('确认删除吗?')) {
self.OrderItems.remove(this);
}
}
self.addOrderItem = function () {
push({ 'ProductName': '', 'ProductCode': '', 'Price': 0, 'Quality': 1 });
}
self.TotalAmount = ko.computed(function () {
var amount = 0;
var array = self.OrderItems();
for (var i = 0 ; i < array.length; i++) {
var price = getFloat(array[i].Price());
var quality = getFloat(array[i].Quality());
amount += Math.formatFloat(quality * price, 2);
}
return "总金额:" + Math.formatFloat(amount, 2).toString();
}, this);
}
var obj1 = new AppViewModel();
function push(obj) {
var itemModel = function (item) {
var self = this;
self.ProductName = ko.observable(item.ProductName);
self.ProductCode = ko.observable(item.ProductCode);
self.ImportStore = ko.observable(item.ImportStore);
self.Price = ko.observable(item.Price);
self.Quality = ko.observable(item.Quality);
};
obj1.OrderItems.push(new itemModel(obj));
}
function buildArray(array) {
obj1.OrderItems([]);
for (var i = 0 ; i < array.length ; i++) {
push(array[i]);
}
}
Knockout 重新绑定注意要点的更多相关文章
- Knockout双向绑定
knockout双工绑定基于 observe 模式,性能高.核心就是observable对象的定义.这个函数最后返回了一个也叫做 observable 的函数,也就是用户定义值的读写器(accesso ...
- knockout同时绑定多个实体demo
1.我们会遇到一种情景:一个页面实现复杂的功能时,我们往往会使用部分页(.netmvc中的@renderaction,java中ajax请求jsp页面). 如果子页面也使用knockout绑定数据会不 ...
- knockout为绑定元素生成id
knockout 提供生成了uniqueName的方法,但没有提供生成Id的方法. 感谢stackoverflow提供的思路与方法. 下面是uniqueName的实现方法. ko.bindingHan ...
- knockout更新列表中的某条数据,knockout.js绑定数组时更新其中一条数据
knockout是一款前端实现MVVM的JS框架,仅knockout.js一个47kb的文件,相当实用,做前端无刷新页面,快速实现JS与HTML数据交互. knockout目前最新版:knockout ...
- Knockout 双向绑定的理解
今天做了个需求就是上传图片,然后在代码中通过jQuery给一个标签赋值,经过前台的debug,发现这个值赋值成功了,但是提交到后台的请求里就没了,然后经历了一顿度娘,结果中发现了问题. 既然knock ...
- knockout事件绑定
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效
解决方案: 使用checkedValue和checked 组合,如下代码. <div><input type="radio" name="flavorG ...
- Knockout自定义绑定my97datepicker
/* my97datepicker 时间格式'yyyy-MM-dd HH-mm-ss' */ ko.bindingHandlers.datetimes = { init: function (elem ...
- knockout.js绑定(enable,disable,visable)
<input type="text" data-bind="disable:IsNew" /> enable :是否可用,为true时,可编辑 di ...
随机推荐
- php后端控制可跨域的域名,允许图片跨域上传
跨域问题经常需要面对,前端需要做的比较直接要么选择ajax异步提交,XML或者jsonp,要么表单提交前端常见跨域解决方案 jsonp基本可以搞定大部分跨域问题,但问题也比较明显,只能通过get方式提 ...
- [NOIP1999]进制位(搜索)
P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...
- 解决MAC下PHP连接MYSQL错误Warning: mysql_connect(): No such file or directory in conn.php
今天在mac上用php去连接mysql数据库,出现了 mac PHP Warning: mysql_connect(): [2002] No such file... 详细例如以下所看到的: Dir ...
- Hadoop2 伪分布式部署
一.简单介绍 二.安装部署 三.执行hadoop样例并測试部署环境 四.注意的地方 一.简单介绍 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop的框架最核心的设计就是: ...
- <Machine Learning in Action >之二 朴素贝叶斯 C#实现文章分类
def trainNB0(trainMatrix,trainCategory): numTrainDocs = len(trainMatrix) numWords = len(trainMatrix[ ...
- 3.React Native在Android中自己定义Component和Module
React Native终于展示的UI全是Native的UI.将Native的信息封装成React方便的调用. 那么Native是怎样封装成React调用的?Native和React是怎样交互的? V ...
- USACO2011 Jan:公司利润
简要题意: 奶牛开了家公司,已经连续运作了N 天.它们在第i 天获得了Ai元的利润,不过有些天是亏钱的,这种情况下利润就是一个负数.约翰想为它们写个新闻,吹嘘它们的惊人业绩.请你帮助他选出一段连续的日 ...
- ORA-01659: 无法分配超出 7 的 MINEXTENTS
plsql连接出错:ORA-01659: 无法分配超出 7 的 MINEXTENTS (在表空间 PERFSTAT 中) 从 Oracle Database 10g Enterprise Editio ...
- MVC5发展历程,从MVC2谈起
目前,MVC已经发布了5个版本,不包括一些临时的版本,为了更好的了解MVC5,知道MVC的发展历程是非常重要的.本篇随笔主要讲解3个版本的内容及其新特性. 1.MVC 2,发布日期:2010年3月 部 ...
- intellij idea 13
mac版 http://pan.baidu.com/s/1c0zjWU8 intellij idea 编辑器之于程序员,犹如鞋之于女人.有的女人赤脚都漂亮,性感. 有的女人赤身都没人看.程序员亦如此. ...