控制器未根据控制台注册



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

我一直在关注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';
}
})();

而这个用于登录的控制器.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>

但是出于某种奇怪的原因,我的控制台一直告诉我我的登录控制器没有注册。

谁能帮助我朝着正确的方向前进?

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

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

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

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

您声明模块scrumboard.demo两次。

移除[]

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

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

在入口点 html 中,文件 scrumboard.config.js 的脚本标记应该在文件控制器文件之前。此外,正如@charlietfl所说,应该删除两次声明。

喜欢这个

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

希望这能纠正这个问题。

相关内容

最新更新