2016-06-30 4 views
0

私が持っている:変数私のサービスで

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; // ? 

    }; 

}); 

は基本的に、私はこれを行うにはどのpropoerの方法、HTTPリクエストからJSONファイルを取得し、fonctionのgetCompaniesでそれを返すようにしたいですか? ご協力いただければ幸いです。

答えて

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); 
    }); 
+0

素晴らしいです!しかし、私のコントローラの外では、console.log(this.companies)は未定義のアイデアをプリントしていますか? – Doapper

+0

これはうまくいくはずです、質問であなたのコントローラコードを更新できますか? – M22an

+0

私は、my.get()メソッドの後にconsole.log(this.companies)を追加し、未定義のファイル – Doapper

0

[OK]ここでわかる問題あなたは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 
    }; 
}); 
+0

私はconsole.log(_this.companies)をしています。私は未定義です。 (そしてhttp getを実行すると、console.log(data)が動作しています) – Doapper

+0

ここで、console.log()をクリアしてください。そのようなものは 'this.a。 $ http.get()。then(data => this.a = data); console.log(a) ' – Daniel

+0

私はgetCompanies関数の最初にconsole.log(_this.companies)を実行しました – Doapper

関連する問題