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调用success方法时,this不再指代工厂,而是指代window. 我原以为这是一件很简单的事情,但我想不通。

如何使用 ? 的结果填充工厂中的字段$http.get

4

1 回答 1

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;
}]);
于 2013-08-22T14:09:15.543 回答