我嘗試使用映射插件作爲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'恢復到原始狀態。
我也嘗試過使用item.Updated(result.Updated);
(其中updated是對象的屬性之一),並按預期工作,但我寧願不手動在每個屬性上手動調用它,除非必須。
是否可以使用ko.mapping.fromJSON(result,item);
(或某些變體)?我在做一些愚蠢的錯誤?
在此先感謝。
謝謝 - 相信與否我之前曾嘗試過 - 好像我可能遇到了影響它的問題 – 2012-07-31 09:07:26