由于某种原因,我的控制器似乎没有注册,老实说,我不确定为什么......
我一直在关注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>
希望这能纠正这个问题。