angularjs中service与controller共享数据

yaotomo 2017-02-04 06:59:12
最近在学ng,写了如下代码

var app = angular.module('indexApp',['highcharts-ng'])
.service('tqmes', ['$http','$q',function($http,$q){
return {
getTsData: function(){
$http({
url: './handlers/TableSpaceHandler.ashx',
method:'GET',
params: {
dbname : 'GYJZLDB',
dbuser : 'aqquser'
}
}).success(function(data,header,config,status){
var tsname = [];
var tstotal = [];
var tsused = [];
for(var i=0;i<data.length;i++){
tsname.push(data[i].name);
tstotal.push(parseFloat(data[i].total));
tsused.push(parseFloat(data[i].used));
}
console.log(tsname); //这里有值
return tsname;
});
}
}
}])
.controller('indexController', ['$scope', '$http','tqmes', function ($scope, $http,tqmes) {
console.log(tqmes.getTsData()); //这里取不到值,为undefined
}]);


执行结果如下图,上面的是controller的运行结果,为undefined
下面是service中$http请求的运行结果,返回一个数组
也就是说,$http异步请求还没有执行完,没有返回结果,这时controller取值是为undefined的
等到异步请求执行完毕,再输出结果
sercice和controller共享数据应该是很常用的,怎样才可以解决这个异步执行造成的问题呢?

...全文
397 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaotomo 2017-11-07
  • 打赏
  • 举报
回复
谁来接一下分
functionsub 2017-11-07
  • 打赏
  • 举报
回复
我就勉为其难的接一下吧。 说到底就是异步操作,函数并没有返回值。
yaotomo 2017-02-04
  • 打赏
  • 举报
回复
使用promise实现了,结贴了,谁来接一下分

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧