2013-08-22 71 views
1

我有一個工廠,看起來像這樣有點:

app.factory('MyFactory',['$http',function($http){ 
    return { 
     state: { 
      collectionOfThings: {} 
     }, 
     getThings: function() { 
      $http.get(url).success(function(data) { 
       this.state.collectionOfThings = data; 
      }); 
     } 
    }; 
}]); 

它所提供的是從得到的事情的方法一個Web服務,我想在state.collectionOfThings中存儲答案。但是,當調用$http成功方法時,this不再指向工廠,而是指window。我原以爲這是一件相當簡單的事情,但我無法弄清楚。

如何在工廠填寫$http.get的結果?

回答

4
app.factory('MyFactory',['$http',function($http){ 
    var obj = {}; 
    obj.state = { 
     collectionOfThings: {} 
    }; 
    obj.getThings = function() { 
     $http.get(url).success(function(data) { 
      obj.state.collectionOfThings = data; 
     }); 
    } 
    return obj; 
}]);