gpt4 book ai didi

javascript - Knockout 加载另一个 AJAX url 来组合到模型中

转载 作者:行者123 更新时间:2023-12-03 10:50:21 25 4
gpt4 key购买 nike

我有一些复杂的问题。我的第一个 JSON url 具有以下属性:ID、名称和参数。然后当我调用 JSON 时,我想根据 ID 去检索另一个 JSON URL 来获取子 ID。

然后我想输出子 ID、父名称和父参数。

这是 jsFiddle http://jsfiddle.net/c3L7gr4w/1/

这是模型 url 1

[
{
"ParemeterValues": "Actual,2011,SYS.LoadCompanies,y,y",
"ID": "1771cdf7-7a73-49e4-8538-0d0cad965226",
"Name": "EXEC.Data.PLandBS.FromFMISMultipleCompanies",
},
{
"ParemeterValues": "Actual,2012",
"ID": "19439ce4-240c-4f2a-98ee-47cb1708b339",
"Name": "Data.BS.BringForwardOpeningBalances",
}
]

和模型 url2

{
"ID": "1771cdf7-7a73-49e4-8538-0d0cad965226",
"Name": "EXEC.Data.PLandBS.FromFMISMultipleCompanies",
"TM1.ChoreProcessesProcess":
[
{
"Name": "EXEC.Data.PLandBS.FromFMISMultipleCompanies",
"ID": "dd1acc0b-51ff-4844-b6c4-c67640b326c4",
}
]
}

最佳答案

我认为您需要调整 dataMappingOptions.key,以便当您将子模型加载到原始模型之上时,KO 可以返回不同的 key 。

我想我这里有一个工作 fiddle - http://jsfiddle.net/sifriday/c3L7gr4w/4/

dataMappingOptions 现在看起来像:

var dataMappingOptions = {
key: function(data) {
var ChildID = "";
if (data["TM1.ChoreProcessesProcess"] != undefined)
ChildID = data["TM1.ChoreProcessesProcess"][0].ID
return data.ID + ChildID;
},
create: function(options) {
return new Person(options.data);
}
};

这样做的问题是,当您加载更新的数据时,KO 现在将使用映射来销毁原来的人员并创建新的人员。但是,updatedData 缺少 ParemeterValue,因此您需要将其从原始 JSON 中合并。即使您使用 Ajax,这也可以,因为您可以将原始 JSON 保存在某个变量中:

loadUpdatedData: function() {
// You need to merge in paremeterValues from your orig JSON
updatedData[0].ParemeterValues = data[0].ParemeterValues;
// Now good to go...
ko.mapping.fromJS(updatedData, dataMappingOptions, viewModel.people);
}

(我也这样做了,以便将 ChildID 作为额外属性附加,但是您应该能够从中看到如何使其替换 People View 模型和 dataMappingOptions.key 中的原始 ID )

关于javascript - Knockout 加载另一个 AJAX url 来组合到模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28443115/

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