出于某种原因,我的控制器似乎没有注册,我老实说也不确定为什么......
我一直关注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很新,所以我真的不知道要添加什么。
如果您需要任何其他信息,请告诉我!
答案 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>
希望这可以解决问题。