这么快,我很难过。
想在我的Appcelerator应用程序中显示一个弹出窗口,它工作正常,但我似乎无法获取并将变量传递给我的函数,因为它一直以未定义的形式返回。
此处未发布弹出式代码段,因为这不是问题。
这里可能是一个完整的小学生错误,任何人都能指出我做错了什么?
所以当用户点击PosterView(通过HTTP请求动态创建)时,我需要将“ourscreenName”和“ourscreenURL”传递给showOurscreenBooking函数。
var xhr = Ti.Network.createHTTPClient({
onload: function() {
// Ti.API.debug(this.responseText);
json = JSON.parse(this.responseText);
Ti.API.info(json);
for (i = 0; i < json.length; i++) {
posterView = Ti.UI.createImageView({
width: Ti.Platform.displayCaps.platformWidth / 3,
defaultImage: 'images/imgloader.png',
top: 0,
backgroundColor: '#000'
});
getPoster(json[i].tmdb_id, posterView, json[i].ourscreen_film_name);
ourscreenName = json[i].ourscreen_film_name;
ourscreenURL = json[i].ourscreen_url;
scrollView.add(posterView);
posterView.addEventListener('click', function(e) {
// need to open up the booking popup
showOurscreenBooking(e.ourscreenName, e.ourscreenURL);
});
}
},
onerror: function(e) {
Ti.API.debug("STATUS: " + this.status);
Ti.API.debug("TEXT: " + this.responseText);
Ti.API.debug("ERROR: " + e.error);
alert('There was an error retrieving the remote data in event loop. Try again.');
},
timeout: 30000 // add longer timeout for slower connections
});
谢谢!
西蒙
答案 0 :(得分:0)
不要认为这是最佳做法(我需要在一个漫长的工作日之后拍摄新鲜空气),但你可以做的是:
getPoster(json[i].tmdb_id, posterView, json[i].ourscreen_film_name);
ourscreenName = json[i].ourscreen_film_name;
ourscreenURL = json[i].ourscreen_url;
// add your properties as custom properties to the view
posterView = Ti.UI.createImageView({
width: Ti.Platform.displayCaps.platformWidth / 3,
defaultImage: 'images/imgloader.png',
top: 0,
backgroundColor: '#000',
ourscreenName: ourscreenName,
ourscreenUrl: ourscreenUrl
});
scrollView.add(posterView);
posterView.addEventListener('click', function(e) {
showOurscreenBooking(e.source.ourscreenName, e.source.ourscreenURL);
});
另见https://archive.appcelerator.com/question/12111/event-propagation----how-to-use-eventsource-property