淘汰赛的DataBinding问题

时间:2013-10-02 12:00:17

标签: jquery asp.net-mvc data-binding knockout.js postback

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

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

Plz帮助我解决这个问题..

SCRIPT:

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

感谢

1 个答案:

答案 0 :(得分: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)));

        }
    }); 
}
每页/节不应多次调用{p> ko.applyBindings