使用Appcelerator

时间:2016-09-20 13:25:00

标签: javascript function appcelerator appcelerator-titanium

这么快,我很难过。

想在我的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
        });

谢谢!

西蒙

1 个答案:

答案 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