AngularJS - ReferenceError:未定义成功

时间:2015-10-24 20:13:53

标签: javascript angularjs

我得到" ReferenceError:未定义成功"当从控制器到我的node.js进行Restful调用时,如下所示:

authControllers.js:

authControllers.controller('authCtrl', ['$scope', '$location', '$window', 'UserService', 'AuthenticationService',
function authCtrl($scope, $location, $window, UserService, AuthenticationService) {
  $scope.me = function() {    
    UserService.me(function(res) {
      $scope.myDetails = res;
    }, function() {
      console.log('Failed to fetch details');
      $rootScope.error = 'Failed to fetch details';
    })
  };      
}]);

authServices.js:

authServices.factory('UserService',['$http', function($http) {
  return {        
    me:function() {
    return $http.get(options.api.base_url + '/me').success(success).error(error)
    }
  }
}]);

HTML:

<div class="row" data-ng-controller="authCtrl" data-ng-init="me()">
    <div class="col-lg-12">
        <div class="panel panel-primary">
            <div class="panel-heading">
                <strong>Your Details</strong>
            </div>
            <div class="panel-body">
                <p>{{myDetails.data.username}}</p>
                <p>{{myDetails.data.email}}</p>
            </div>
        </div>
    </div>
</div>

正在接收成功的nodeJs呼叫并且它也会返回数据,但是 无法在前端得到它。请帮忙!

2 个答案:

答案 0 :(得分:5)

错误是:

return $http.get(options.api.base_url + '/me').success(success).error(error)

要解决此问题,请不要尝试引用不存在的successerror个功能。

return $http.get(options.api.base_url + '/me')

当您拨打正确使用的$q时,Angular会返回$http承诺。不推荐使用成功和错误解决方法。

  

$ http遗留承诺方法成功与错误已被弃用。

答案 1 :(得分:2)

.success和.error不是$ http.get调用的一部分。 $ http.get本身就是一个承诺,所以当你打电话给你的服务时,你需要

authControllers.controller('authCtrl', ['$scope', '$location', '$window', 'UserService', 'AuthenticationService',
function authCtrl($scope, $location, $window, UserService, AuthenticationService) {
  $scope.me = function() {    
    UserService.me().then(function(res) {
      $scope.myDetails = res;
    }, function() {
      console.log('Failed to fetch details');
      $rootScope.error = 'Failed to fetch details';
    })
  };      
}]);

,您的服务应保持简单:

authServices.factory('UserService',['$http', function($http) {
  return {        
    me:function() {
    return $http.get(options.api.base_url + '/me');
    }
  }
}]);

更多关于$http