Javascript 使用映射插件将JSON对象映射到敲除数组
JSON ajax响应是:Javascript 使用映射插件将JSON对象映射到敲除数组,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,JSON ajax响应是: function PanelViewVM() { var self = this; self.PanelName = ko.observable("Test"); self.PanelDetails = ko.observableArray([]), self.SelectPanel = function () { $.ajax("/DPanel/FillIndex", { dataType: 'json', conte
function PanelViewVM() {
var self = this;
self.PanelName = ko.observable("Test");
self.PanelDetails = ko.observableArray([]),
self.SelectPanel = function () {
$.ajax("/DPanel/FillIndex", {
dataType: 'json',
contentType: 'application/json',
success: function (data) {
ko.mapping.fromJS(data.PanelDetails, {}, self.PanelDetails);
},
error: function (data) {
console.log(data);
}
});
};
self.SelectPanel();
};
ko.applyBindings(new PanelViewVM());
在映射中,我试图将PanelDetails对象返回到敲除数组
然后从该数组中选择Panel并绑定到强标记
{
"PanelDetails": [
{
"PanelID": 466,
"Panel": "581ZDPAD30D",
"PanelType": 2,
"Source": "S63B",
"Substation": "S63",
"Bay": "615W",
"Voltage": 480,
"kVA": 630,
"Utility": "N",
"Train": "B",
"Circuits": 12,
"Status": "Existing/Re-fed/Re-tag",
"Drawing": "IRAE-0326"
}
],
"DPanelCcts": [
{
"PanCctID": 1442,
"PanelID": 466,
"cct": 1,
"Base": 250,
"POCID": null,
"DateUpdated": null,
"Assigned": ""
},
{
"PanCctID": 1443,
"PanelID": 466,
"cct": 2,
"Base": 400,
"POCID": 38,
"DateUpdated": "/Date(1427842800000)/",
"Assigned": "EDT113-E04"
}
] }
面板:
我认为我没有正确地传递到数组。
对于PanelDetails数组,它只有一行数据。我做了一个测试。如果您对Ajax数据如何返回的看法正确,那么您需要做的唯一一件事就是更改绑定变量表示法
<p>
Panel: <strong data-bind=" text: PanelDetails[0].Panel">
</strong>
</p>
Panel:
PanelDetails是一个可观察的工具。在编制索引之前,您需要使用函数表示法:
这似乎不起作用。我将数据绑定到数组self.PanelDetails=ko.observearray([])的方式可能有问题。
语句ko.mapping.fromJS(data.PanelDetails,{},self.PanelDetails)中的数据绑定是否正确代码>?@RoyJ说得对。这是小提琴。如果你在找别的东西,请告诉你。我现在有另一个问题。当我绑定到DOM中的第二个元素时,它只绑定数组中的第一个元素<代码>面板:源:子站:间隔:
在您的小提琴中似乎可以正常工作,但在我的环境中却不行。@user1781272应该可以。除此之外,我真的建议遵循更好的方法创建映射
,以后不要在视图中使用索引。干杯
Panel: <strong data-bind=" text: PanelDetails()[0].Panel">