AngularJS:无法读取属性' get'未定义的$ http

时间:2015-03-10 06:04:54

标签: angularjs http undefined

var myApp = angular.module('myApp',[]);

myApp.controller('Controller', function($scope, $interval){

    $interval(function($scope, $http){

        $http.get('test.json').success(function(data){
        $scope.notifications = data;
        });
    },5000);

});

任何人看到我到底做错了什么?间隔工作正常,因为错误在Chrome控制台中重复5秒。我是否正确地将$ http传递给控制器​​?

4 个答案:

答案 0 :(得分:1)

应该在控制器的构造函数中注入所有Angular模块。

var myApp = angular.module('myApp',[]);
myApp.controller('Controller', function($http, $scope, $interval){

$interval(function(){
    $http.get('test.json').success(function(data){
          $scope.notifications = data;
    });
},5000);

});

答案 1 :(得分:0)

您需要在控制器中注入$ http。 (与注入$ scope和$ interval的方式相同。)您可能有兴趣阅读https://docs.angularjs.org/guide/di

var myApp = angular.module('myApp',[]);
myApp.controller('Controller', function($scope, $interval, $http){

    $interval(function($scope, $http){

        $http.get('test.json').success(function(data){
        $scope.notifications = data;
        });
    },5000);

});

答案 2 :(得分:0)

就像您注入$interval服务一样,您需要注入$http服务:

var myApp = angular.module('myApp',[]);

myApp.controller('Controller', function($scope, $interval, $http){

    $interval(function($scope, $http){

        $http.get('test.json').success(function(data){
        $scope.notifications = data;
        });
    },5000);

});

答案 3 :(得分:0)

您需要在控制器中传入$ http,如下:

var myApp = angular.module('myApp', []).
myApp.controller('ImagesCtrl', ['$scope', '$http', '$interval', function ($scope, $http, $interval) {
    $interval(function(){

        $http.get('test.json').success(function(data){
        $scope.notifications = data;
        });
    },5000);
}]);