1

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

脚本和视图如下。从控制器返回所需的视图模型。

请帮我解决这个问题..

脚本:

> 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>

谢谢

4

1 回答 1

1

这样做的原因是,它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每页/部分不应多次调用

于 2013-10-02T12:08:49.573 回答