Когда я пытаюсь связать данные с помощью нокаута, когда pageload работает нормально. Но когда postback это вызывает ошибку «Вы не можете применять привязки несколько раз к одному и тому же элементу». а также данные, повторяющиеся неправильно.Проблема с DataBinding с нокаутом
Сценарий и вид, как показано ниже. из контроллера он возвращает требуемую модель просмотра.
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>
благодаря
этот код dataCollection = ko.mapping.fromJS (data.rosterViewModels); должен быть dataCollection (ko.mapping.fromJS (data.rosterViewModels)), иначе dataCollection будет ссылаться на новый массив, а ui будет ссылаться на другой массив, поэтому данные не будут обновляться в ui. –
@DhanaKrishnasamy да, вы правы, я пропустил эту часть, обновляя код сейчас, я также обычно добавляю 'ko.utils.unwrapObservable' вокруг этого – Armand
Спасибо u Armand ......... за превосходный комментарий – user2838480