AngularJS控制器错误 - :$ http.get不是控制器部分中的函数

时间:2015-04-26 14:17:32

标签: javascript angularjs restful-url ngresource

var hsbc = angular.module('hsbc',['ngResource','ngRoute']);

hsbc.config([' $ routeProvider',' $ locationProvider',function($ routeProvider,$ locationProvider){

//console.log('config part working'); 
$routeProvider
    .when('/login', {
        controller: 'hsbccontroller',
        templateUrl: 'modules/authentication/views/login.html',
        hideMenus: true
    })
    .when('/gloabltranfer', {
        controller: 'hsbccontroller',
        templateUrl: 'modules/home/views/gloabltranfer.html'
    })
    .when('/tranferReq', {
        controller: 'hsbccontroller',
        templateUrl: 'modules/home/views/TransferRquest.html'
    })
    .when('/reviewdetail', {
        controller: 'hsbccontroller',
        templateUrl: 'modules/home/views/Reviewdetails.html'
    })
    .when('/confirmdetail', {
        controller: 'hsbccontroller',
        templateUrl: 'modules/home/views/confirmdetails.html'
    })

    .when('/', {
        controller: 'hsbccontroller',
        templateUrl: 'modules/authentication/views/login.html'
    })

    .otherwise({ redirectTo: '/login' });

}])。控制器(' hsbccontroller',[' $ scope',' $ http',' $ resource',功能($范围,$资源,$ HTTP){

    //console.log('controller part working'); 
$http.get('http://localhost:8080/1/').success(function(data) {
    alert(data);
        $scope.greeting = data;
    });

}]);

2 个答案:

答案 0 :(得分:28)

您需要更改$ http和$ resource的位置。

angularJS如何工作,(如果以这种方式定义),angular尝试匹配字符串提供给函数的参数,以便它知道哪个参数是什么。 这基本上是为了缩小目的,它实际上会改变变量,如下所示。:

.controller('hsbccontroller', ['$scope','$http','$resource', function(a,b,c){

    //console.log('controller part working'); 
a.get('http://localhost:8080/1/').success(function(data) {
    alert(data);
        $scope.greeting = data;
    });
}]);

所以在这里,angularjs知道:

a表示$ scope,

b是$ http,

和c是$ resource。

在你的情况下,它实际上正在尝试" $ resource.get"因此给你错误。 进一步阅读检查给定文档页面上关于缩小的注释: https://docs.angularjs.org/tutorial/step_05

答案 1 :(得分:0)

在我看来,这是错误的位置 - .controller('hsbccontroller', ['$scope','$http','$resource', function($scope,$resource,$http)

正确的位置 - .controller('hsbccontroller', ['$scope', '$http','$resource', function($scope, $http, $resource)

.controller('hsbccontroller', ['$scope', '$http','$resource', function($scope, $http, $resource){
    $http.get('http://localhost:8080/1/').success(function(data) {
    alert(data);
        $scope.greeting = data;
    });
}

我遇到了和你一样的问题,但使用正确的位置可以解决问题。