gpt4 book ai didi

javascript - 来自 ajax post 的 knockout 映射数据与静态数据

转载 作者:行者123 更新时间:2023-11-28 01:45:49 25 4
gpt4 key购买 nike

我在 Ko 映射方面遇到了一个奇怪的问题。我使用这段代码:

var PList = [{ "Region": { "RegionName": "SomeRegion" }, "CDetails": {}, "Category": { "Name": "SomeCategory" }, "PSource": 1, "PDate": "0001-01-01T00:00:00"}];

var PViewModel = ko.mapping.fromJS(search('someSearch', 'True'));
var PViewModel2 = ko.mapping.fromJS(PostList);

function search(queryString, isFirst) {
$.ajax({
type: 'POST',
url: 'url',
data: { 'searchQuery': queryString },
dataType: 'json',
success: function (dt) {
if (isFirst != 'True') {
ko.mapping.fromJS(dt, PostsViewModel);
}
return dt;
}
});
};

奇怪的是我看到了两个结果:

  1. 当我转到 PViewModel(由 ajax 填充的模型)时,我将其视为 undefined
  2. 当我转到 PViewModel2(具有静态数据的模型)时,我可以按预期看到对象

*PViewModel2的静态数据只是ajax post返回的数据的副本。

我的问题是:

  1. 有谁知道为什么会这样吗?又该如何解决呢?
  2. 此外,if (isFirst != 'True') 子句是初始化 ko View 模型的正确方法吗?

最佳答案

您正在处理异步操作(Ajax 请求)。 这些操作没有返回值。因此,这永远不会起作用:

ko.mapping.fromJS(search('someSearch', 'True'));

这就是 success 回调的用途。传入数据只能在那里处理。

function search(queryString, targetObservable) {
$.ajax({
type: 'POST',
url: 'url',
data: { 'searchQuery': queryString },
dataType: 'json',
success: function (dt) {
ko.mapping.fromJS(dt, targetObservable);
}
});
};

search('someSearch', PostsViewModel);

关于javascript - 来自 ajax post 的 knockout 映射数据与静态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339769/

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