gpt4 book ai didi

javascript - 单击选择器元素时重新加载表格 View ,并使用钛中的更新数据

转载 作者:行者123 更新时间:2023-11-28 06:58:21 25 4
gpt4 key购买 nike

我有一个像这样的来自 API 调用的 json 响应。

`{
"id": "7",
"issue_title": "Apr - May 2015",
"issue_no": "Issue 1.4",
"cover_image_url": "http://www.link.org/apr--may-2015-7.jpg",
"synopsis_pdf_url": "",
"advertisers_pdf_url": "",
"issue_date": "01-04-2015",
"issue_year": "2015"
},
{
"id": "3",
"issue_title": "Feb-Mar 2015",
"issue_no": "Issue 1.3",
"cover_image_url": "http://www.link.org/febmar-2015-3.jpg",
"synopsis_pdf_url": "http://www.link.org/febmar-2015-3.pdf",
"advertisers_pdf_url": "http://www.link.org/febmar-2015-3.pdf",
"issue_date": "01-02-2015",
"issue_year": "2015"
},
{
"id": "2",
"issue_title": "Dec 2014 - Jan 2015",
"issue_no": "Issue 1.2",
"cover_image_url": "http://www.link.org/dec-2014--jan-2015-2.jpg",
"synopsis_pdf_url": "",
"advertisers_pdf_url": "",
"issue_date": "01-12-2014",
"issue_year": "2014"
},
{
"id": "1",
"issue_title": "Oct - Nov 2014",
"issue_no": "Issue 1.1",
"cover_image_url": "http://www.link.org/oct--nov-2014-1.jpg",
"synopsis_pdf_url": "",
"advertisers_pdf_url": "",
"issue_date": "01-10-2014",
"issue_year": "2014"
}`

现在我正在检索在选择器中显示的 issue_year

我希望如果用户点击issue_year,表数据应仅显示具有相同issue_year的记录。就像如果从选择器中单击 2014 年一样,它应该只显示第三条和第四条记录。现在,当准备好选择器数据时,我从 Controller 传递选择器中的 jsonResponse[i] 对象,以便在其单击中检索相同的内容,但我得到 undefined

js代码如下

function openpastIssues(e) {

var url = "http://example.com/api/past_year_issue.aspx";
var jsonResponse;
var response;

var data = [];
var pickerData = [];
var singleData = [];
var row;
var xhr = Ti.Network.createHTTPClient({
onload : function() {
// parse the retrieved data, turning it into a JavaScript object
Ti.API.info("From Past Issues (function): " + this.responseText);
jsonResponse = JSON.parse(this.responseText);

var rowHeight = 150;
// just pick the right height here
var imageRowIsFull = false;
var myImage;
var issuelbl;

var row = Ti.UI.createTableViewRow({
width : Ti.UI.SIZE,
height : Ti.UI.SIZE,
layout : "horizontal"
});

for (var i = 0; i < jsonResponse.length; i++) {
var tView = Ti.UI.createView({
width : Ti.UI.SIZE,
height : Ti.UI.SIZE,
left : "5%",
right : "5%",
top : "5",
bottom : "5",
backgroundColor : "#A9F5A9",
//backgroundColor : "black",
layout : "vertical"

});

issuelbl = Ti.UI.createLabel({
color : 'blue',
text : jsonResponse[i].issue_title,

height : "auto",
width : "auto",
left : "3%",
font : {
fontSize : 13
},
});

tView.add(issuelbl);

myImage = Ti.UI.createImageView({
width : 120,
//left : "5%",
//right : "5%",
top : "5",
//bottom:"5",
height : 150,
image : jsonResponse[i].cover_image_url,
obj : jsonResponse[i]
});
tView.add(myImage);
try {
myImage.addEventListener('click', function(e) {
Ti.API.info('Clicked data = ' + JSON.stringify(e.source.obj));
var jsonRes = e.source.obj;
Alloy.createController('singleissue', jsonRes);
});
} catch(e) {

}
row.add(tView);
//row.add(myImage);
imageRowIsFull = false;

if ((i + 1) % 2 == 0) {//this will add a new row every 2 items.
imageRowIsFull = true;
data.push(row);
row = Ti.UI.createTableViewRow({
width : Ti.UI.SIZE,
height : Ti.UI.SIZE,
layout : "horizontal",
filterCriteria :jsonResponse[i].issue_year

});
}
pickerData[i] = Ti.UI.createPickerRow({
title : jsonResponse[i].issue_year,
obj : jsonResponse[i]
});

}

if (!imageRowIsFull) {//do not forget to add the last row
data.push(row);
}



//table.setData(data); 
$.issueTable.setData(data);
$.picker.add(pickerData);

},

onerror : function(e) {
Ti.API.debug(e.error);
alert('error');
},
timeout : 5000
});

xhr.open("GET", url);
xhr.send();
}
$.picker.addEventListener('change', function(e) {
Ti.API.info('From picker ' + e.source.obj);
});

xml文件

<Alloy>
<Window id="winpast" class="container" title="Past issues" onOpen="openpastIssues">
<View id="view2" width="Ti.UI.FILL" height="Ti.UI.FILL" backgroundColor="#A9F5A9" >
<View id="viewcheck1" >
<Label id="title" width="Ti.UI.SIZE" text="Past Issues" height="Ti.UI.SIZE" textAlign="Ti.UI.TEXT_ALIGNMENT_CENTER"></Label>
<ImageView id="menuImg" image="/images/menu.png" onClick="showsideBar" left="5"></ImageView>
<Picker id="picker" selectionIndicator="true" height="Ti.UI.SIZE" width="Ti.UI.SIZE" right="10">

</Picker>
</View>
<View id="tablePast" width="Ti.UI.FILL" height="Ti.UI.FILL" top="40">
<TableView id="issueTable" scrollable="true"></TableView>
</View>
<View id="viewBelow" width="150" height="Ti.UI.FILL" backgroundColor="#A9A5A9" left="-150" visible="false" top="40">
<TableView id="menuTable"></TableView>
</View>

</View>
</Window>
</Alloy>

基本上我想显示从选择器中选择的特定年份的记录。

任何人都可以帮忙解决这个问题吗?我在这上面花了很多时间。

最佳答案

您可以创建一个 NSMUtableArray 并根据“issue_year”的值重新填充它。您可以使用 NSPredicate 对 json 进行排序

关于javascript - 单击选择器元素时重新加载表格 View ,并使用钛中的更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32370112/

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