我一直在使用这个,但我不知道为什么这不起作用。 我在按钮和控制器内部放了ng-click =“login()” HTML:
<div class="login-wrapper" ng-controller="loginCtrl">
<div ng-show="showAlert" class="alert alert-warning alert-bold-border fade in alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<strong>{{alert.head}}</strong> {{alert.body}}
</div>
<form role="form">
<div class="form-group has-feedback lg left-feedback no-label">
<input type="text" class="form-control no-border input-lg rounded" placeholder="Enter username" autofocus ng-model="user.name">
<span class="fa fa-user form-control-feedback"></span>
</div>
<div class="form-group has-feedback lg left-feedback no-label">
<input type="password" class="form-control no-border input-lg rounded" placeholder="Enter password" ng-model="user.password">
<span class="fa fa-unlock-alt form-control-feedback"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-warning btn-lg btn-perspective btn-block" ng-click="login()">LOGIN</button>
</div>
</form>
</div>
JS
App.controller("loginCtrl", function ($scope, $rootScope, $window) {
$scope.showAlert = false;
$scope.login = function () {
console.log("sid");
$scope.showAlert = false;
$window.location.href = "http://www.google.com";
};
});
但页面重新加载而不是去任何地方,我在日志sid上看到,所以函数调用正在发生。
奇怪。你能指导我吗?
答案 0 :(得分:2)
在这种情况下,我认为你不需要$ window。尝试没有这样的$:
App.controller("loginCtrl", function ($scope, $rootScope) {
$scope.showAlert = false;
$scope.login = function () {
console.log("sid");
$scope.showAlert = false;
window.location.href = "http://www.google.com";
};
});
答案 1 :(得分:0)
我不能在不看你的HTML的情况下给你一个很好的答案,但对我来说似乎任何项目都有ng-click =&#34; login()&#34;当点击按钮时,浏览器似乎仍在提交表单。我建议加载$ event并执行$ event.preventDefault();在您的登录功能中。
注意你也可以添加一个返回false;在函数的底部,但我认为这只是有点邋is然后只是将$ event注入函数并阻止它。