我试图从appcelerator中的URL解析JSON数据。我解析了所有数据并尝试在列表视图中输出它。但它只显示解析数据中的最后一项。(如果有10个值可用,则只显示第10个值)。这是我的代码和XML数据。
var contactList = [];
var contactsArray,cId,cName,cEmail,cAddr,cGender;
var xhr = Ti.Network.createHTTPClient({
onload : function() {
var jsonParse = JSON.parse(this.responseText);
for (var i = 0; i < jsonParse.contacts.length; i++) {
contactsArray = jsonParse.contacts[i];
cId = contactsArray.id;
cName = contactsArray.name;
cEmail = contactsArray.email;
cAddr = contactsArray.address;
cGender = contactsArray.gender;
var elementData;
contactList = [];
contactData = {
"name_label" : {
text : cName,
},
"email_label" : {
text : cEmail,
},
"addr_label" : {
text : cAddr,
},
"gender_label" : {
text : cGender,
},
"template" : "list_template_wh",
"properties" : {
itemId : cId,
backgroundColor : "transparent"
}
};
contactList.push(contactData);
};
$.contactListView.sections[0].setItems(contactList);
},
onerror : function() {
Ti.API.debug(e.error);
},
timeout : 5000
});
xhr.open("GET", Alloy.Globals.AppURL);
xhr.send();
This is my xml code
<Alloy>
<Window id="win_main" title="Window Main">
<ListView id="contactListView" >
<Templates>
<ItemTemplate name="list_template_wh" id="list_temp_wh">
<View id="list_item_container">
<Label bindId="name_label" id="contact_name"/>
<Label bindId="email_label" id="contact_email"/>
<Label bindId="addr_label" id="contact_addr"/>
<Label bindId="gender_label" id="contact_gen"/>
</View>
</ItemTemplate>
</Templates>
<ListSection/>
</ListView>
</Window>
</Alloy>
任何帮助都将深表感谢。三江源
答案 0 :(得分:3)
那是因为你重新定义了for循环中的contactList
数组。
在循环中contactList = [];
后删除var elementData;
juste。