2016-09-20 4 views
0

すごく速いので、私は困惑しています。Appceleratorで適切に関数に値を渡す

私の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

はこのベストプラクティス(私は本当に長い一日の仕事の後に新鮮な空気のショットを必要とする)を検討したが、何を行う可能性があるしないでください。

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を見ます

+0

これだけです!私はちょっとした問題があります。最初のポスターをクリックすると正常な動作が得られます。 2番目のポスターをクリックすると、最初のポスター情報が表示され、次に2番目のポスター情報が表示されます。 3番目をクリックすると、1番目、2番目、3番目のポスター情報が表示されます。 –

+0

私の最初の考え:それを 'var posterView = Ti.UI.createImageView ...'にしてください。代わりにposterViewだけで、あなたはおそらくグローバルとしてposterViewを定義して、あなたの問題を解決すれば教えてください。 – davidcyp

関連する問題