Jquery 使用knockout.js绑定表如何清除

Jquery 使用knockout.js绑定表如何清除,jquery,ajax,knockout.js,Jquery,Ajax,Knockout.js,我试图使用从web服务获得的数据,使用knockout.js绑定下表。一般情况下可以工作,但我想解决3个问题: 当我调用AJAX并返回数据时,我需要在ko.applyBindings(msg)之前清除表。现在它只是不断地添加 我有100个测试对象,添加了200/300后,速度越来越慢。我估计这个表可能包含300条记录。。编辑实际上,它似乎为每行创建了另外100行。所以,第一次调用100行,第二次调用10000行 为了绑定,我必须指定第一行。它在页面加载时显示,如何清除这一行 HTML: 首先,在

我试图使用从web服务获得的数据,使用knockout.js绑定下表。一般情况下可以工作,但我想解决3个问题:

  • 当我调用AJAX并返回数据时,我需要在
    ko.applyBindings(msg)之前清除表。现在它只是不断地添加

  • 我有100个测试对象,添加了200/300后,速度越来越慢。我估计这个表可能包含300条记录。。编辑实际上,它似乎为每行创建了另外100行。所以,第一次调用100行,第二次调用10000行

  • 为了绑定,我必须指定第一行。它在页面加载时显示,如何清除这一行

  • HTML:


    首先,在使用Knockout时,您应该将调用
    ko.applyBindings()
    一次作为目标。初始化视图模型后,您将采取操作该模型的操作,允许Knockout的双向绑定动态更改您的UI

    这里有一个小提琴示例,它模拟了我认为您正在尝试的操作。它初始化视图模型,进行AJAX调用以加载前100行,然后允许用户单击刷新以重新加载

  • 清除表就像清除self.data([])一样简单

  • 行爆炸是因为多次调用
    ko.applyBindings()

  • 您可以使用
    if
    绑定禁用表呈现

  • 例如:

    <table id="mainTable" class="paddedTable" data-bind="if: data().length > 0">
    
    
    
    这将仅在数据包含元素时呈现表

    function onRefreshButtonClick() {
            $.ajax({
                type: "POST",
                url: "/Customer/TrackShipment.aspx/GetShipments",
                data: "{ dateFrom: '" + $("#FromDateTextBox").val() + "', dateTo: '" +  $("#ToDateTextBox").val() + "' }",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    var a = msg.d;
    
    
                    ko.applyBindings(msg);
    
                    // 
                }
            });
        }
    
    <table id="mainTable" class="paddedTable" data-bind="if: data().length > 0">