开发者社区> 问答> 正文

angularjs在controller中获取来自node的json无法解析 400 请求报错 

流程是这样的:当前台发送Get请求/xxx时,node向前台返回一个json报文{data:'success'}
我在前台的controller中发送请求,将获得到的报文,也就是result绑定到scope中的phone上,

phonecatControllers.controller('PhoneListCtrl', ['$scope', 'Phone', function ($scope, Phone) {
  var result = Phone.query();
  console.log(result.data);//undefined
  $scope.phone = result;
}]);
问题是,我在controller中打印result.data的时候,打印出来的是 undefined,直接打印result的时候打印出来的是 Object { $promise: Object, $resolved: false }

而在html里用{{phone.data}}显示的时候,显示就是success,请问这是为什么?

展开
收起
kun坤 2020-05-30 16:13:47 570 0
1 条回答
写回答
取消 提交回答
  • 是不是请求异步了。 先执行了console.log(result.data)。 而这个时候还没有给result赋值。 可以看看promise之类的。 我一般是这么写的 service:

     service.query = function(id,data){
        	 var deferred = $q.defer();
             var scope = this;
             $http.post(BASE_URL+'/query/'+id,data)
             .success(function(msg) {
                 //todo
                 deferred.resolve(msg);
             })
             .error(function() {
                 deferred.reject();
             });
             return deferred.promise;
        }

    controller:

    service.query(1,$scope.searchData).then(function(msg){
    		$scope.data = msg.data;
                    //todo
    	},function(err){
    		console.log(err);
    	});

    ######result.$promise.then(function (o) { console.log("data:-->" + o.data); }); 你说的是对的,是ajax请求,这样就取到了!

    2020-05-30 16:13:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
探究 Node.js 的服务端之路 立即下载
个推微服务实践 基于OpenResty 和Node.js 立即下载
沪江基于Node.js大规模应用实践 立即下载

相关镜像