为了账号安全,请及时绑定邮箱和手机立即绑定

处理服务中的$http响应

处理服务中的$http响应

慕后森 2019-06-21 13:48:36
处理服务中的$http响应我最近发表了一篇关于我面临的问题的详细描述。这里在这样的时候。因为我无法发送一个真实的$http请求时,我使用超时值来模拟异步行为。从我的模型到视图的数据绑定是正确的,这是在@glupy的帮助下进行的。现在,当我用$http而不是$timeout(在本地测试),我可以看到异步请求是成功的,并且data在我的服务中充满了JSON的响应。但是,我的观点并没有更新。更新Plunkr这里
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

因为它是异步的,所以$scope是在Ajax调用完成之前获取数据。

你可以用$q在您的服务中创建promise并将其返回给控制器,控制器在then()反对promise.

为你服务,

app.factory('myService', function($http, $q) {
  var deffered = $q.defer();
  var data = [];  
  var myService = {};

  myService.async = function() {
    $http.get('test.json')
    .success(function (d) {
      data = d;
      console.log(d);
      deffered.resolve();
    });
    return deffered.promise;
  };
  myService.data = function() { return data; };

  return myService;});

然后,在您的控制器中:

app.controller('MainCtrl', function( myService,$scope) {
  myService.async().then(function() {
    $scope.data = myService.data();
  });});


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 512 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信