错误: - Angular JS中未定义$ http

时间:2014-12-08 17:51:16

标签: angularjs

我收到这个控制器的错误,$ http未定义。请告诉我缺少什么..

define(
    ['activityFeedTimeStamp' ],
    function(app) {

        app.register
                .controller(
                        'timeStampController',
                        [
                                '$scope',
                                '$rootScope',

                                function($scope, $rootScope) {
                                    $http.get('http://localhost:7001/ebiz/ebizdashboard/activityfeed/updatetimestamp').
                                          success(function(data, status, headers, config) {

                                          //  $('#timeStampVal').html(data.lastacesstime);
                                            $('#timeStampVal').html(hiiiiiiiii);
                                          }).
                                          error(function(data, status, headers, config) {
                                           $("#timeStamp").hide();
                                          });
                                }]);


    });

3 个答案:

答案 0 :(得分:3)

注入" $ http"像这样进入控制器:

   .controller(
      'timeStampController',
      [
          '$scope',
          '$rootScope',
          '$http', // need to inject $http into controller
      function($scope, $rootScope, $http) {

基本上,您使用的任何服务(无论是您定义的服务还是内置的Angular,如$ http)都需要注入要使用的控制器中。

由于您正在使用minify-friendly控制器语法(列出数组和函数参数中的注入),因此您需要在两个位置添加它。

参见文档: https://docs.angularjs.org/guide/di (特别是"内联数组注释")

答案 1 :(得分:2)

我在使用

时遇到了同样的问题
    myApp.controller('mainController', ['$scope', function($scope,) {
        //$http was not working in this
    }]);

我已将上面的代码更改为以下内容。请记住包含$ http(2次),如下所示。

 myApp.controller('mainController', ['$scope','$http', function($scope,$http) {
      //$http is working in this
 }]);

它运作良好。

来源:https://stackoverflow.com/a/22125671/2439715

答案 2 :(得分:1)

你没有在控制器中注入$ http服务

app.register
                .controller(
                        'timeStampController',
                        [
                                '$scope',
                                '$rootScope',
                                '$http'

                                function($scope, $rootScope,$http) {
                                    $http.get('http://localhost:7001/ebiz/ebizdashboard/activityfeed/updatetimestamp').
                                          success(function(data, status, headers, config) {

                                          //  $('#timeStampVal').html(data.lastacesstime);
                                            $('#timeStampVal').html(hiiiiiiiii);
                                          }).
                                          error(function(data, status, headers, config) {
                                           $("#timeStamp").hide();
                                          });
                                }]);


    });