gpt4 book ai didi

knockout.js - knockout 映射插件更新数组中的单个项目

转载 作者:行者123 更新时间:2023-12-04 18:16:04 30 4
gpt4 key购买 nike

我在尝试使用映射插件将项目更新为 observableArray 的一部分时遇到问题。

我有以下代码

accounts.list = ko.mapping.fromJS(@(Html.Raw(Model.AccountsJSON)));

我有这个绑定(bind)到一个表使用
<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); (并更新我的 Controller 以返回完整列表)并且这可以正常工作 - 问题是我不想更新整个表,我“只是”想将“项目”恢复为原始状态。

我也试过使用 item.Updated(result.Updated); (其中更新是对象的属性之一),这可以按预期工作,但是我宁愿不要在每个属性上手动调用它,除非我必须这样做。

是否可以使用 ko.mapping.fromJSON(result,item); (或一些变体)?我在做一些愚蠢的错误吗?

提前致谢。

最佳答案

除非我误解了您的意图,否则您可以使用 ko.mapping.fromJS 的变体来执行此操作mapping docs 中提到的(或 fromJSON)在“指定更新目标”下。
所以我想你想要这个:

ko.mapping.fromJSON(result, {}, item); 

这是一个 fiddle : http://jsfiddle.net/kR4jc/

关于knockout.js - knockout 映射插件更新数组中的单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699089/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com