我想通過使用ko.utils.arrayMap()來循環關聯的JSON對象,但函數永遠不會以這種方式進入循環。任何人都可以建議我如何獲得這些屬性。可能我對這種JSON使用了錯誤的效用函數?ko.utils.arrayMap與關聯JSON對象
var data = [
{
"job_id":"AM28200",
"inspection":{
"5":{
"inspection_type_id":5,
"inspection_type_name":"hydro",
"display_name":"Requested",
"html_name":"Hydro",
"itp":"Stage H1. H2, H3",
"1":{
"dates":[
"2013-10-21"
],
"inspectors":[
" "
]
},
"2":{
"dates":[
"2013-10-21"
],
"inspectors":[
" "
]
},
"3":{
"dates":[
"2013-10-21"
],
"inspectors":[
" "
]
},
"4":{
"dates":[
"2013-10-21"
],
"inspectors":[
" "
]
},
"5":{
"dates":[
"2013-10-21"
],
"inspectors":[
" "
]
}
}
}
},
{
"job_id":"AM28212",
"inspection":{
"5":{
"inspection_type_id":5,
"inspection_type_name":"hydro",
"display_name":"Waived",
"html_name":"Hydro",
"itp":"Stage H1. H2, H3",
"1":{
"dates":[
"2013-10-21"
],
"inspectors":[
" "
]
}
}
}
}
]
var InspectionDiary = function() {
var self = this;
self.jobs = ko.observableArray([])
function Job(data){
var self = this;
self.job_id = data.job_id;
self.types = ko.observableArray([])
}
function Type(data){
var self = this;
self.type_id = ko.observable(data.inspection_type_id);
self.name = ko.observable(data.inspection_type_name);
self.display_name = ko.observable(data.display_name);
self.html_name = ko.observable(data.html_name);
self.itp = ko.observable(data.itp);
self.inspectors = ko.observableArray([])
self.dates = ko.observableArray([]);
}
var jobs = ko.utils.arrayMap(data, function(item) {
var job = new Job(item);
var types = ko.utils.arrayMap(item.inspection, function(item) {
var type = new Type(item)
type.dates = ko.utils.arrayMap(item.dates(), function(item) {
return new Dates(item);
})
type.inspectors = ko.utils.arrayMap(type.inspectors(), function(item) {
return new Inspector(item);
})
return type;
})
job.types(types);
return job;
});
self.jobs(jobs);
}
ko.applyBindings(new InspectionDiary())
感謝您的幫助!現在有道理!你知道我有什麼辦法可以迭代對象嗎? – Wellso
試試這個http://api.jquery.com/jQuery.each/ – pax162