2016-03-22 14 views
0

Servisin içindeki bir nesneyi açısal uygulamamda saklıyorum, geri arama yönteminin içinden 'this' erişemiyorum. Böyle bir şey ...açısal acsess 'this' geri arama

app.service("myService", ['$http', '$q', 
     function($http, $q) { 
      return ({foo: foo}); 

      this.myObj = {}; 

      function doSomething(param, callback){ 
      param++; 
      callback(param); 
      } 

      function foo(param){ 
      doSomething(param, function(responce){ 
      this.myObj.myParam = responce;//'this' is undefined 
      }); 
      } 
    }); 

Doğru şekilde nasıl girerim? örnek olarak,

obj bu olmak istiyorum nesne ise
+1

Yeni bir soru sormadan önce lütfen aramayı kullanın. –

+0

Bir dahaki sefere daha iyi deneyecek ... Evet, sizden! –

cevap

0

, işleve f için gerçek this olarak ayarlamak için bind kullanabilirsiniz ... Teşekkür ederim: f.bind(obj). documentation itibaren

:

bağlama() yöntemi çağrıldığında, sağlanan değere ayarlanmış olan bu anahtar kelimeyi içeren yeni işlevi oluşturur [...]

1

' Bu sadece fonksiyonun mevcut kapsamında tutulur. Yeni bir işlev çağrıldığında 'bu' değişir. çoğu insanın yaptığı şey şu ki = bu;

app.service("myService", ['$http', '$q', 
    function($http, $q) { 
     var that = this; 

     return ({foo: foo}); 

     this.myObj = {}; 

     function doSomething(param, callback){ 
     param++; 
     callback(param); 
     } 

     function foo(param){ 
     doSomething(param, function(responce){ 
      that.myObj.myParam = responce;//'that' defined 
     }); 
     } 
}); 
0

İlk önce "bu" nesneyi bir değişkene kaydetmelisiniz. Ve bunu geri arama işlevi içinde kullanmalısınız.

app.service("myService", ['$http', '$q', 
    function($http, $q) { 
     return ({foo: foo}); 
     var self = this; 
     self.myObj = {}; 

     function doSomething(param, callback){ 
     param++; 
     callback(param); 
     } 

     function foo(param){ 
     doSomething(param, function(responce){ 
     self.myObj.myParam = responce; 
     }); 
     } 
}); 

Size yardımcı olmanızı dilerim.