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 重新绑定注意要点的更多相关文章

  1. Knockout双向绑定

    knockout双工绑定基于 observe 模式,性能高.核心就是observable对象的定义.这个函数最后返回了一个也叫做 observable 的函数,也就是用户定义值的读写器(accesso ...

  2. knockout同时绑定多个实体demo

    1.我们会遇到一种情景:一个页面实现复杂的功能时,我们往往会使用部分页(.netmvc中的@renderaction,java中ajax请求jsp页面). 如果子页面也使用knockout绑定数据会不 ...

  3. knockout为绑定元素生成id

    knockout 提供生成了uniqueName的方法,但没有提供生成Id的方法. 感谢stackoverflow提供的思路与方法. 下面是uniqueName的实现方法. ko.bindingHan ...

  4. knockout更新列表中的某条数据,knockout.js绑定数组时更新其中一条数据

    knockout是一款前端实现MVVM的JS框架,仅knockout.js一个47kb的文件,相当实用,做前端无刷新页面,快速实现JS与HTML数据交互. knockout目前最新版:knockout ...

  5. Knockout 双向绑定的理解

    今天做了个需求就是上传图片,然后在代码中通过jQuery给一个标签赋值,经过前台的debug,发现这个值赋值成功了,但是提交到后台的请求里就没了,然后经历了一顿度娘,结果中发现了问题. 既然knock ...

  6. knockout事件绑定

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效

    解决方案: 使用checkedValue和checked 组合,如下代码. <div><input type="radio" name="flavorG ...

  8. Knockout自定义绑定my97datepicker

    /* my97datepicker 时间格式'yyyy-MM-dd HH-mm-ss' */ ko.bindingHandlers.datetimes = { init: function (elem ...

  9. knockout.js绑定(enable,disable,visable)

    <input type="text" data-bind="disable:IsNew" /> enable :是否可用,为true时,可编辑 di ...

随机推荐

  1. last-child到底怎么用

    今天工作时候遇到的坑, 看来还是css基础不够扎实,特此记录一下, <div> <p>1</p> <p>2</p> <p>3&l ...

  2. 消除textarea的空格de长度值

    在项目中因为用到文本域textarea输入textarea的长度总是显示 25 那是还怀疑textarea自带有value长度? placeholder属性的长度? 那时候想到类似:ul无序列表li元 ...

  3. 【redis】redis命令集

    参考资料: http://www.cnblogs.com/woshimrf/p/5198361.html

  4. Log4j2打印一行日志时返回本行日志的字符串

    import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.impl.Log4jLogEvent; impo ...

  5. struts2文件上传需要注意的

    ① 必须封装三个字段:文件.文件类型.文件名,而且这三个字段的名字的前面几个字母是一样的 如: private File upload; private String uploadContentTyp ...

  6. django-xadmin定制之列表页searchbar placeholder

    环境:xadmin-for-python3 python3.5.2 django1.9.12 列表页的searchbar如果提供的可搜索字段,都没提示哪个字段可搜索,很不友好,本次定制主要增加inpu ...

  7. Struts(21)OGNL具体解释

    Struts2 中内置了OGNL表达式的支持,使得Struts2的具有比Struts1更为强大的数据訪问的功能.本文主要解说OGNL的用法.并不会去解说一些原理性的东西.想要了解的朋友能够自己去查阅相 ...

  8. [Recompose] Refactor React Render Props to Streaming Props with RxJS and Recompose

    This lesson takes the concept of render props and migrates it over to streaming props by keeping the ...

  9. OpenCV图像处理篇之边缘检測算子

    3种边缘检測算子 灰度或结构等信息的突变位置是图像的边缘,图像的边缘有幅度和方向属性.沿边缘方向像素变化缓慢,垂直边缘方向像素变化剧烈.因此,边缘上的变化能通过梯度计算出来. 一阶导数的梯度算子 对于 ...

  10. 线程池系列一:线程池作用及Executors方法讲解

    线程池的作用: 线程池作用就是限制系统中执行线程的数量.     根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量 ...