マッピングプラグインを使用して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);
はエラーを引き起こさず、関数は続行されますが、observableが更新されることはありません。
コードをに変更してko.mapping.fromJSON(result,accounts.list);
(そして完全なリストを返すようにコントローラーを更新して)、これは正しく機能します-問題は、テーブル全体を更新したくないということです。「単に」「アイテム」を元に戻したいのです。元の状態に。
また、(updatedはオブジェクトのプロパティの1つです)を使用してみましたitem.Updated(result.Updated);
が、これは期待どおりに機能しますが、必要がない限り、すべてのプロパティでこれを手動で呼び出すことはしません。
使用することは可能ko.mapping.fromJSON(result,item);
ですか(またはそのバリエーション)?私は愚かなことをしているのですか?
前もって感謝します。