【发布时间】:2015-06-07 19:57:00
【问题描述】:
我正在使用映射插件来更新视图模型,如下所示:
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (json) {
if (json.Page == 1) {
ko.mapping.fromJS(json, {}, self);
} else {
self.List().push(ko.mapping.fromJS(json.List));
}
console.log(ko.toJSON(self.List()));
},
});
然而,不是更新 List() 可观察数组(在 ajax 调用完成时仅添加新项目 - 对于第 2 页(DB 中的下几个项目),它添加了一个新 List => 注意控制台输出中的“[”元素:
AJAX 响应 (json)
{"DiscountType":"Transaction","List":[{"ActivationDate":"/Date(1427215761818)/","CustomerName":"另外两个 2","CustomerNumber":4328,"Percent" :20,"HasDiscount":true},{"ActivationDate":"/Date(1428079761818)/","CustomerName":"另一棵树","CustomerNumber":1212,"Percent":20,"HasDiscount":true }],"页面":2}
控制台输出:
[{"ActivationDate":"/Date(1388556000000)/","CustomerName":"Test1 Inc.","CustomerNumber":10032,"Percent":20,"HasDiscount":true},{"ActivationDate ":"/Date(1426783761818)/","CustomerName":"另一个 1","CustomerNumber":5174,"Percent":20,"HasDiscount":true},[{"ActivationDate":"/Date( 1427215761818)/","CustomerName":"另外两个 2","CustomerNumber":4328,"Percent":20,"HasDiscount":true},{"ActivationDate":"/Date(1428079761818)/","CustomerName ":"另一棵树","CustomerNumber":1212,"Percent":20,"HasDiscount":true}]]
我做错了什么?
【问题讨论】:
-
能把json.List的内容贴出来吗?您的问题似乎是 json.List 是一个数组,并且您将该 Array 对象作为一个元素推送到您现有的 Array 中,而不是 Array 中的单个元素。
-
没错。 json List 是一个数组。我将如何推动单个元素?映射插件会正确处理新 List 元素的属性吗?
标签: knockout.js knockout-mapping-plugin