这会在UI上更新值:
PortfolioGeneral.CompanyName(item.CompanyName);
我可以手工编写这些值,但我想使用映射。但是这不起作用:
PortfolioGeneral = ko.mapping.fromJS(item);
在调用以下函数之前已经调用了ko.applyBindings。此调用应更新所有模型值。
function getPortfolioGeneral(portfolioId, PortfolioGeneral) {
$.ajax({
url: "/api/portfolio",
contentType: "text/json",
dataType: "json",
type: "GET",
data: { id: portfolioId },
success: function (item) {
//PortfolioGeneral = ko.mapping.fromJS(item);
PortfolioGeneral.CompanyName(item.CompanyName);
},
error: function (data) {
}
});
}
答案 0 :(得分:2)
使用语句PortfolioGeneral = ko.mapping.fromJS(item);
,您会覆盖 PortfolioGeneral
的值,因此您的原始可观察属性将被替换为新的属性,因此KO无法再跟踪它们。< / p>
您需要从PortfolioGeneral
对象的数据更新item
属性,您可以使用以下语法执行此操作:
ko.mapping.fromJS(
item, // the source object what you want to map
{}, // the mapping options if you want something mapped special
PortfolioGeneral // the target object which you want to be updated
);