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]);
        }
    }

 

转载于:https://www.cnblogs.com/zyug/p/7838109.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值