2015-03-03 58 views
2

我想从我的AngularJS控制器调用一个函数用下面的代码:功能在AngularJS控制器不会被调用

控制器代码

(function() { 

    var hello = angular.module("helloApp", []); 

    hello.controller("HelloCtrl", ["$http", "$scope", function($scope, $http) { 
     console.log("in controller"); 
     $scope.test = function() { 
      console.log("in test function"); 
      $http.get("/test").success(function(data) { 
       console.log("success"); 
      }) 
      .error(function(data) { 
       console.log("error"); 
      }); 
     }; 
    } ]); 

})(); 

HTML

<!DOCTYPE html> 
<html ng-app="helloApp"> 
    <head> 
    ... 
    </head> 
    <body ng-controller="HelloCtrl"> 
    <div class="container"> 
    <form class="form-horizontal"> 
     <div class="form-group"> 
     <div class="col-sm-offset-2 col-sm-10"> 
      <button type="submit" class="btn btn-default" ng-click="test()">Search</button> 
     </div> 
     </div> 
    </form> 
    </div> 
    ... 
</body> 

当我启动应用程序时,我会看到消息"in controller",正如我所期望的。但是,如果我点击提交按钮,那么我看不到任何其他三个控制台消息。

我错过了什么?

回答

5

您的依赖注入顺序错误。

hello.controller("HelloCtrl", ["$http", "$scope", function($scope, $http) { 

应该是

hello.controller("HelloCtrl", ["$http", "$scope", function($http, $scope) { 

参数的顺序必须是相同的顺序名称的数组。