Angular服务中的变量

时间:2016-06-30 11:01:26

标签: angularjs

在我的服务中,我有:

angular.module('Name.Common', [])

.service('myData', function($http) {
  $http.get('server.com/json').success(function(data, status, headers, config) {

        this.companies = data;
        var companies2 = data;

    }).error(function(data, status, headers, config) {

    });


    this.getCompanies = function() {
        return this.companies; //?? return companies2; // ?

    };

});

基本上,我只是想从http请求中获取一个json文件,然后在fectction getCompanies中返回它,其中propoer的方法是什么? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

在您的服务中,您只需要返回请求:

angular.module('Name.Common', [])

.service('myData', function($http) {
    var self = this;

    self.get = function(){
        return $http.get('server.com/json');
    }
});

然后在你的控制器中你处理数据的“.then”:

var companies;

myData.get()
    .then(function (response) {
        companies = response; //data only available after this is hit
        console.log(companies); 
    });

答案 1 :(得分:0)

好的,我在这里看到的问题。您执行http调用并在回调中设置this,但这不是服务的this。它与本地绑定的var相同。所以外部服务部门不知道它。 我建议的是这样的。我没有测试它,但它应该工作

angular.module('Name.Common', [])
  .service('myData', function($http) {
     var _this = this;
     var companies;

     $http.get('server.com/json').success(function(data, status, headers, config) {
    _this.companies = data;
    companies = data;

    }).error(function(data, status, headers, config) {

    });


    this.getCompanies = function() {
      return _this.companies; // that part I would test if it works with just this.
      // or return companies2
   };
});