我正在编写一个基本的登录应用程序。我有
./ JS / app.js
'use strict';
var drfmApp = angular.module('drfmApp', [
'ngRoute','drfmControllers'
]);
./ JS /控制器/ LoginController.js
'use strict';
var drfmControllers = angular.module('drfmControllers', []);
drfmControllers.controller('LoginController', ['$scope','$location',
function($scope,LoginService) {
$scope.login = function () {
console.log($scope.user.username);
LoginService.login();
}
}
]);
./ JS /服务/ LoginService.js
'use strict';
drfmApp.factory('LoginService',function(){
return {
login:function(){
console.log("enter function login service");
},
logout:function(){
console.log("enter functuon logout service");
}
}
});
最后是部分查看HTML
<div class="container-fluid">
<div class="row">
<div class="col-md-8">
<header>Wellcome, {{user.username}}</header>
<blockquote>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
</p> <small>Someone famous <cite>Source Title</cite></small>
</blockquote>
</div>
<div class="col-md-4">
<form class="form-horizontal" role="form" name="form" ng-submit="login()" >
<div class="form-group">
<label for="username" class="col-sm-2 control-label">
Username
</label>
<div class="col-sm-10">
<input type="text" name="username" id="username" class="form-control" ng-model="user.username" required />
</div>
</div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label">
Password
</label>
<div class="col-sm-10">
<input type="password" name="password" id="password" class="form-control" ng-model="user.password" required />
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" /> Remember me
</label>
</div>
</div>
</div>
<div class="form-actions">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" ng-disabled="form.$invalid" class="btn btn-primary">Login</button>
<a href="#/register" class="btn btn-link">Register</a>
</div>
</div>
</form>
</div>
</div>
</div>
但我总是有这个错误
TypeError:login不是函数
点击页面的“登录”按钮。
有人可以帮我吗?
先谢谢
答案 0 :(得分:2)
在类似数组的依赖注入中,
array
中的项被映射到控制器函数的arguments
。
试试这个:
drfmControllers.controller('LoginController', ['$scope', 'LoginService',
function($scope, LoginService) {//can be used as `function(s, l)`
$scope.login = function() {
console.log($scope.user.username);
LoginService.login();
}
}
]);
答案 1 :(得分:1)
您正在注入$ scope和$ location,而不是您的登录服务。为了使用它,你必须先注射它。
将其更改为:
drfmControllers.controller('LoginController', ['$scope','LoginService', function($scope, LoginService) {
$scope.login = function () {
console.log($scope.user.username);
LoginService.login();
}
}
]);