Javascript AngularJS ngSubmit未调用控制器函数

Javascript AngularJS ngSubmit未调用控制器函数,javascript,angularjs,ng-submit,Javascript,Angularjs,Ng Submit,我有一个表单,我正试图使用ng submit,但它没有调用控制器函数submit() index.html ... <body ng-app="app"> <div ng-view></div> <!-- In production use: <script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script

我有一个表单,我正试图使用ng submit,但它没有调用控制器函数submit()

index.html

...
<body ng-app="app">

    <div ng-view></div>
    <!-- In production use:
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script>
    -->
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>
    <script src="js/services.js"></script>
    <script src="js/controllers.js"></script>
    <script src="js/filters.js"></script>
    <script src="js/directives.js"></script>
    <script src="js/jquery.js"></script>
    <script src="js/bootstrap.js"></script>
    <script src="js/app.js"></script>
</body>
和my controller.js:

'use strict';

/* Controllers */

angular.module('app.controllers', [])

.controller('loginController', ['$http', function($scope, $http) {
    $scope.formData = {};
    console.log('Controller Loaded');
    $scope.submit = function() {
        console.log('Click');
        $http({
            method: 'POST',
            url: 'http://localhost:8080/RoommateAPI/authentication/login',
            data: $scope.formData,
            headers: {'Content-Type': 'application/json'}
        }).success(function(data, status, headers, config) {
            console.log(data);
        }).error(function() {
            console.log("ERROR")
        });
    }
}]);
当我点击提交时,它并没有出错或做任何事情。。。感觉我错过了一些明显的东西,但我看了之后,一切似乎都是一样的

我所尝试的:

  • 将控制器整合到app.js中
  • 已从标记中删除控制器的双重声明

尝试将表单标记放入div中,然后在此div上声明控制器而不是表单。

控制器的构造函数中的参数错误。你有:

app.controller('loginController', ['$http', function($scope, $http) {
将此更改为:

app.controller('loginController', ['$scope', '$http', function($scope, $http) {

尝试添加错误块单击submit时submit函数是否正在执行?@vadim我在其中有一个console.log(),但我没有看到它出现。但是,控制器函数中的console.log()确实记录了日志。您在路由定义和标记中双重声明了
loginController
,我将从标记中删除它,因为路由定义将为您设置它。由于您有单独的文件,请确保在应用程序之前包含controllers.js。js@vadim如果我在函数($scope,$http)下运行console.log(),那么{line,它记录了两次。这修复了它。出于某种原因,我认为范围注入是隐含的?一定是在某个地方误读了什么。是的,你必须显式地注入它。有时只需要第二双眼睛。很高兴能帮上忙。
app.controller('loginController', ['$http', function($scope, $http) {
app.controller('loginController', ['$scope', '$http', function($scope, $http) {