我的js代码是:
var Myapp =angular.module("Myapp",[]);
Myapp.service("Myservice",function($http,$scope){
this.userDate=function(){
return $http({
method:'GET',
url:'js/phone.json'
})
Myapp.controller("Myctrl",function($scope,Myservice){
console.log(Myservice.userDate().phone);
});
我的json文件是:
{
"phone": "1",
"verification": "1"
}
返回的结果是undefine 不知道为什么,我这里哪里有错吗,求大神解答
Service 写得没问题,但你的 Controller 有问题。
因为获取数据是从服务器请求而来,是异步的操作。你直接用
console.log
打印,是不行的,因为打印语句运行的时候,从服务器请求的结果还没有返回回来。所以,你得这样写:你老的代码就可以运行起来了。
不过,其实我并不建议你这样组织你的 Service 和 Controller,比较好的办法是在 Service 里用 $q 组织代码,如下:
然后在 Controller 里直接对返回的 promise 进行操作,代码组织如下:
控制器的代码更简单,而 Service 可以更好的控制出错时的操作。