控制器未根据控制台

时间:2017-05-14 14:41:30

标签: javascript html angularjs django

出于某种原因,我的控制器似乎没有注册,我老实说也不确定为什么......

我一直关注PluralSight上的AngularJS和Django开发课程。教练的筹码和我的筹码之间的唯一区别是我使用的是Angular 1.6.4并且他使用的是1.5.0。我之前遇到过一些错误(比如路由语法),但总的来说还不错。

修改

我应该提一下,我只是按照指导员的指示并编写与他相同的代码。

然而,现在,我只是被卡住了。我在 scrumboard.config.js

中获得了此路由
(function () {

    "use strict";

    angular.module('scrumboard.demo', ["ngRoute"])
        .config(["$routeProvider", config])
        .run(["$http", run]);

        function config($routeProvider) {

            $routeProvider
                .when('/', {
                    templateUrl: "/static/html/scrumboard.html",
                    controller:  "ScrumboardController",
                })
                .when('/login', {
                    templateUrl: "/static/html/login.html",
                    controller:  "LoginController",
                })
                .otherwise('/');
        }

        function run($http) {
            $http.defaults.xsrfHeaderName = 'X-CSRFToken';
            $http.defaults.xsrfCookieName = 'csrftoken';
        }
})();

login.html 的控制器:

(function() {

    "use strict";

    angular.module("scrumboard.demo", [])
        .controller("LoginController",
                    ["$scope", "$http", "$location", LoginController]);

    function LoginController($scope, $http, $location) {

        $scope.login = function () {

            $http.post('/auth_api/login/', $scope.user)
                .then(function (response){
                    $location.url("/");
                },
                function(error) {
                    //failure
                    $scope.login_error = "Invalid username or password";
                });
        };
    };

})();

导航到localhost:8000/#!/login时,我可以看到我的表单:

<form ng-submit="login()">
    <div style="...">{{ login_error }}</div>
    <div>
        <label>Username</label>
        <input type="text" ng-model="user.username"/>
    </div>
    <div>
        <label>Password</label>
        <input type="password" ng-model="user.password"/>
    </div>
    <div>
        <button type="submit">Submit</button>
    </div>
</form>

但是由于一些奇怪的原因我的控制台一直告诉我我的LoginController没有注册。

有谁能帮助我朝正确的方向发展?

很抱歉,如果我错过任何类型的文件,但我对Angular很新,所以我真的不知道要添加什么。

如果您需要任何其他信息,请告诉我!

3 个答案:

答案 0 :(得分:1)

从控制器对[]的定义中删除login.html

angular.module("scrumboard.demo")
    .controller("LoginController",
                ["$scope", "$http", "$location", LoginController]);

答案 1 :(得分:0)

您正在声明模块scrumboard.demo两次。

删除

中的[]
 angular.module("scrumboard.demo")
        .controller("LoginController",
                    ["$scope", "$http", "$location", LoginController]);

没有angular.module()的第二个参数,它是一个getter,否则它是一个setter

答案 2 :(得分:0)

在入口点html中,文件scrumboard.config.js的脚本标记应位于文件控制器文件之前。同样,@ charlietfl表示应该删除两次声明。

像这样,

<script src="your_path/scrumboard.config.js"></script>
<script src="your_path/scrumboard.controller.js"></script>

希望这可以解决问题。