1

FB.api 内で method() を呼び出すことができません。メソッドにアクセスするにはどうすればよいですか? できない this.method(); またはメソッド();

var MyLayer = cc.Layer.extend({
   init: function(){
      FB.init({
       ............
      });
      FB.getLoginStatus(function(response) {
         if (response.status === 'connected') {
               FB.api('/me', function(response) {
                  this.method(); // <---- I cant call this here. How can I call method(); ?? Thank!
               });
         }
      });
   },
   method: function(){
      alert("Hello");
   }
});
4

2 に答える 2

4

への参照を保存してthis使用します。

var MyLayer = cc.Layer.extend({
   init: function(){
       var that = this; // Save reference to context
       //.....
       FB.getLoginStatus(function(response) {
           if (response.status === 'connected') {
               FB.api('/me', function(response) {
                  that.method(); // Call method on stored context
               });
           }
        });
    }
});

bindまたは、コンテキストへのコールバック関数を使用できます (ES5 が必要)。

var MyLayer = cc.Layer.extend({
   init: function(){
       //.....
       FB.getLoginStatus(function(response) {
           if (response.status === 'connected') {
               FB.api('/me', function(response) {
                  this.method(); // Call method on context
               }.bind(this)); // Bind callback to context
           }
        }.bind(this)); // Bind callback to context
    }
});
于 2013-05-12T07:48:14.977 に答える