有两个ng控制器,每个都有一个ng单击。不能在同一页上有2个ng单击
如果我将下面的代码设置为两个ng-click脚本,那两个按钮将不起作用。但是,如果我只设置了任何一个ng-click脚本,该按钮就起作用。
我该如何解决?
<body ng-app="myapp">
<div ng-controller="loginController">
<h3>Login</h3>
<form class="login" role="form">
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" ng-model="email">
</div>
<div class="form-group">
<label for="pwd">Password:</label>
<input type="password" class="form-control" id="pwd" placeholder="Enter password" ng-model="password">
</div>
<button type="submit" ng-click="login()" class="btn btn-default">Login</button>
</form>
</div>
<div ng-controller="registerController">
<h3>Register</h3>
<form class="register" role="form">
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" ng-model="emailR">
</div>
<div class="form-group">
<label for="pwd">Password:</label>
<input type="password" class="form-control" id="pwd" placeholder="Enter password" ng-model="pwdR">
</div>
<div class="form-group">
<label for="name">Your Name:</label>
<input type="text" class="form-control" id="name" placeholder="Enter your name" ng-model="nameR">
</div>
<button type="submit" ng-click="register()" class="btn btn-default">Register</button>
</form>
</div>
<script>
var api = ""
angular.module("myapp", []).controller("loginController", function($scope, $http) {
$scope.login = function(){
if(!isEmpty($scope.email) || !isEmpty($scope.password)){
var loginInfo = api + "login/" + $scope.email + "/" + $scope.password;
var responsePromise = $http.get(loginInfo);
responsePromise.success(function(data, status, headers, config) {
var msg = data.result;
alert(msg);
top.location.reload();
});
responsePromise.error(function(data, status, headers, config) {
alert("AJAX fail!");
});
}
}
});
angular.module("myapp", []).controller("registerController", function($scope, $http) {
$scope.register = function(){
if(!isEmpty($scope.emailR) || !isEmpty($scope.pwdR || !isEmpty($scope.nameR))){
var registerInfo = api + "register/" + $scope.emailR + "/" + $scope.pwdR + "/" + $scope.nameR; alert(registerInfo);
var responsePromise = $http.get(registerInfo);
responsePromise.success(function(data, status, headers, config) {
var msg = data.result;
alert(msg);
});
responsePromise.error(function(data, status, headers, config) {
alert("AJAX fail!");
});
}
}
});
您可能想用别名命名您的控制器,然后在调用ng-click()方法时将此别名用作前缀。例如:ng-controller =“loginController as ctrl”,然后ng-click =“ctrl.login()”当然可以将别名更改为任何适合的名称。通常以单数和小写形式表示控制器的名称。这样你甚至可以嵌套控制器。并在控制器上的方法的定义使用:this.login,而不是$ scope.login – Jorge