在我的服务中,我有:
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的方法是什么? 任何帮助将不胜感激。
答案 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
};
});