$ window.location.href不起作用

时间:2015-08-04 19:24:42

标签: javascript angularjs

我一直在使用这个,但我不知道为什么这不起作用。 我在按钮和控制器内部放了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">&times;</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上看到,所以函数调用正在发生。

奇怪。你能指导我吗?

2 个答案:

答案 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注入函数并阻止它。