Javascript 未定义Var$http

Javascript 未定义Var$http,javascript,angularjs,Javascript,Angularjs,我正在尝试构建Angularjs应用程序,但我的控制器有问题 'use strict'; /* Controllers */ angular.module('myApp.controllers', []). controller('AppCtrl', function ($scope, $http) { }). controller('indexCTRL', function ($scope) { $http.get('/api/frettir'). succe

我正在尝试构建Angularjs应用程序,但我的控制器有问题

'use strict';

/* Controllers */

angular.module('myApp.controllers', []).
  controller('AppCtrl', function ($scope, $http) {

  }).
  controller('indexCTRL', function ($scope) {
    $http.get('/api/frettir').
    success(function(data, status, headers, config) {
      $scope.posts = data;
    });

  });

但当我运行它时,会出现一个错误,表明未定义$http。我可以改进什么?

您应该将其作为依赖项添加到每个使用它的控制器:

'use strict';

/* Controllers */

angular.module('myApp.controllers', []).
  controller('AppCtrl', function ($scope, $http) {

  }).
  controller('indexCTRL', function ($scope, *$http*) {
    $http.get('/api/frettir').
    success(function(data, status, headers, config) {
      $scope.posts = data;
    });

  });
controller('indexCTRL', function ($scope, $http) {

您需要在使用它的控制器中注入
$http
服务。我喜欢这种非常精确的方法,如果你的代码通过缩微器,它可以避免问题

controller('indexCTRL', ['$scope', '$http',
    function($scope, $http) {
     //...your code

    }
])

只需要在控制器中注入$http我不知道当我按下add answer时它上面有一个-1。是的,我们差不多同时写了答案,我有0,你有-1。。。哦,好吧,这是诚实行事的更好方法。如果你把它做成一个数组,那么当你决定缩小它时,你就不必回去对每个控制器都这样做了。我从经验中知道这一点:哈哈