流程是这样的:当前台发送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,请问这是为什么?
是不是请求异步了。 先执行了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请求,这样就取到了!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。