У меня проблема с попыткой обновить элемент как часть observableArray с помощью подключаемого модуля сопоставления.
У меня есть следующий код
accounts.list = ko.mapping.fromJS(@(Html.Raw(Model.AccountsJSON)));
Я привязал это к таблице, используя
<tbody data-bind="foreach: list"> ... </tbody>
Все это работает правильно, у меня есть следующая функция
$('#datatable').delegate(".cancelLock", "click", function() {
var item = ko.contextFor(this).$data;
var param = {AccountNumber : item.AccountNumber()}
$.post('@Url.Action("cancellock","accounts")',param,function(result){
ko.mapping.fromJSON(result,item);
if(accounts.lockeditem() == item){
accounts.lockeditem(0);
}
});
});
строка ko.mapping.fromJSON(result,item);
не вызывает ошибок, и функция продолжается, однако это не приводит к обновлению наблюдаемого.
Я попытался изменить код на ko.mapping.fromJSON(result,accounts.list);
(и обновить свой контроллер, чтобы вернуть полный список), и это работает правильно - проблема в том, что я не хочу обновлять всю таблицу, я «просто» хочу вернуть «элемент» вернуться в исходное состояние.
Я также пытался использовать item.Updated(result.Updated);
(где update является одним из свойств объекта), и это работает, как и ожидалось, однако я бы предпочел не вызывать это вручную для каждого свойства, если мне это не нужно.
можно ли использовать ko.mapping.fromJSON(result,item);
(или какой-то вариант)? Я делаю что-то глупо неправильно?
Заранее спасибо.