Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 带敲除的数据绑定问题_Jquery_Asp.net Mvc_Data Binding_Knockout.js_Postback - Fatal编程技术网

Jquery 带敲除的数据绑定问题

Jquery 带敲除的数据绑定问题,jquery,asp.net-mvc,data-binding,knockout.js,postback,Jquery,Asp.net Mvc,Data Binding,Knockout.js,Postback,当我尝试在页面加载时使用knockout绑定数据时,它工作正常。但当回发时,它会抛出一个错误“不能对同一个元素多次应用绑定”,并且数据会以错误的方式重复 脚本和视图,如下所示。从控制器返回所需的viewmodel 请帮我解决这个问题 脚本: > var dataCollection = ko.observableArray(); > > function loadShiftSummary() { > ko.cleanNode($("#shiftInfo"));

当我尝试在页面加载时使用knockout绑定数据时,它工作正常。但当回发时,它会抛出一个错误“不能对同一个元素多次应用绑定”,并且数据会以错误的方式重复

脚本和视图,如下所示。从控制器返回所需的viewmodel

请帮我解决这个问题

脚本:

> var dataCollection = ko.observableArray();
> 
> function loadShiftSummary() {
>     ko.cleanNode($("#shiftInfo"));
>     $.ajax({
>         url: 'testurl',
>         type: 'post',
>         contentType: 'application/json',
>         success: function (data) {           
>    
>             dataCollection = ko.mapping.fromJS(data.rosterViewModels);
>             ko.applyBindings(dataCollection, document.getElementById("shiftInfo"));
>         }
>     }); }
视图:

>  <tbody data-bind="foreach: dataCollection">
>         <tr>
>             <td data-bind="text: Description"></td>
>           
>             @for (int i= 0; date < 30; i++)
>             {
>                 <td data-bind="text: $data.CountArray()[@i]"></td>
>             }
>         </tr> 
> </tbody>
>
>         
>             
>           
>@for(int i=0;日期<30;i++)
>             {
>                 
>             }
>          
> 

谢谢

这样做的原因是,
ko.applyBindings(dataCollection,document.getElementById(“shiftInfo”)被多次调用

我的建议是在你的文件中准备好

ko.applyBindings(dataCollection, document.getElementById("shiftInfo"));
并将其从函数中删除

function loadShiftSummary() {

    $.ajax({
        url: 'testurl',
        type: 'post',
        contentType: 'application/json',
        success: function (data) {           

            dataCollection(ko.utils.unwrapObservable( ko.mapping.fromJS(data.rosterViewModels)));

        }
    }); 
}

ko.applyBindings
每页/每节调用不应超过一次

原因是
ko.applyBindings(dataCollection,document.getElementById(“shiftInfo”)被多次调用

我的建议是在你的文件中准备好

ko.applyBindings(dataCollection, document.getElementById("shiftInfo"));
并将其从函数中删除

function loadShiftSummary() {

    $.ajax({
        url: 'testurl',
        type: 'post',
        contentType: 'application/json',
        success: function (data) {           

            dataCollection(ko.utils.unwrapObservable( ko.mapping.fromJS(data.rosterViewModels)));

        }
    }); 
}

ko.applyBindings
每页/每节调用不应超过一次

此代码dataCollection=ko.mapping.fromJS(data.rosterViewModels);应该是dataCollection(ko.mapping.fromJS(data.rosterViewModels)),否则dataCollection将引用新的数组,ui将引用不同的数组,因此数据将不会在ui中更新。@Dhanakrishnasami是的,你是对的,我错过了这一部分,现在正在更新代码,我还通常在代码dataCollection=ko.mapping.fromJS(data.rostServiceWModels)周围添加
ko.utils.unwrapObservable
;应该是dataCollection(ko.mapping.fromJS(data.RostServiceWModels)),否则dataCollection将引用新的数组,ui将引用不同的数组,因此数据将不会在ui中更新。@Dhanakrishnasami是的,你是对的,我错过了这一部分,现在更新代码,我通常还会在这一部分周围添加
ko.utils.unwrobbservable