【问题标题】:How to navigate one page to another page using AngularJs如何使用 AngularJs 将一个页面导航到另一个页面
【发布时间】:2016-02-16 15:49:30
【问题描述】:

如何从一个页面导航到另一个页面。假设我有一个登录页面,在单击提交按钮时输入用户名和密码文件后,它需要验证,如果用户名和密码都正确,则需要进入主页。主页内容需要显示。我在这里发布代码。在浏览器中 url 正在改变,但内容没有改变。

index.html

<html ng-app='myApp'>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"/>
<script
    src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
<script
    src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
</head>

<body >
    <div id='content' ng-controller='LoginController'>
        <div class="container">
            <form class="form-signin" role="form" ng-submit="login()">
                <h3 class="form-signin-heading">Login Form</h3>
                <span><b>Username :</b>&nbsp; <input type="username"
                    class="form-control" ng-model="user.name" required> </span> </br>
                </br> <span><b>Password :</b>&nbsp;&nbsp; <input type="password"
                    class="form-control" ng-model="user.password" required> </span> 
                <br><br>                
                <button class="btn btn-lg btn-primary btn-block" type="submit">
                    <b>Sign in</b>
                </button>
            </form>
        </div>
        <!-- /container -->
    </div>
    <script src='test.js' type="text/javascript"></script>
</body>
</html>

home.html

Hello I am  from Home page

test.js

var applog = angular.module('myApp',['ngRoute']);

applog.config([ '$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {   
        $routeProvider.when('/home', {
            templateUrl : 'home.html',
            controller : 'HomeController'
        }).otherwise({
            redirectTo : 'index.html'
        });
        //$locationProvider.html5Mode(true); //Remove the '#' from URL.
    } 
]);

applog.controller("LoginController", function($scope, $location) {
    $scope.login = function() {
        var username = $scope.user.name;
        var password = $scope.user.password;
        if (username == "admin" && password == "admin") {
            $location.path("/home" );
        } else {
            alert('invalid username and password');
        }
    };
});

applog.controller("HomeController", function($scope, $location) {

});

【问题讨论】:

  • 你能告诉我我需要在哪里添加吗?
  • 如果我在 index.html 中添加
    它正在显示 index.html 内容 + 我的 home.html 内容,但我只想显示 home.html 内容跨度>
  • 一个建议:使用 ui-route 而不是 ng-route。
  • 我也试过了。它不工作。如果您有任何工作示例,请提供给我。

标签: angularjs angularjs-routing


【解决方案1】:

正如@dfsq 所说,您需要一个 ng-view 来放置您的新视图。当然,如果您将 ng-view 添加到索引中,您将看到索引和主页的内容。这里的解决方案是创建两个局部视图,一个用于登录身份验证,另一个用于家庭。索引文件应仅包含 ng-view 和您希望在整个应用程序中保持不变的元素(菜单、页脚...)

这是我所说的代码: index.html

<html ng-app='myApp'>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"/>
<script
    src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
<script
    src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
 <script src='test.js' type="text/javascript"></script>
</head>

<body >
    <div ng-view></div>
    <script src='test.js' type="text/javascript"></script>
</body>
</html>

您的新路线配置

applog.config([ '$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
        $routeProvider.when('/home', {
            templateUrl : 'home.html',
            controller : 'HomeController'
        })
        $routeProvider.when('/', {
            templateUrl : 'auth.html',
            controller : 'LoginController'
        }).otherwise({
            redirectTo : 'index.html'
        });
        //$locationProvider.html5Mode(true); //Remove the '#' from URL.
    }
]);

并将您的登录代码放入 auth.html 文件中

<div id='content' ng-controller='LoginController'>
        <div class="container">
            <form class="form-signin" role="form" ng-submit="login()">
                <h3 class="form-signin-heading">Login Form</h3>
                <span><b>Username :</b>&nbsp; <input type="username"
                    class="form-control" ng-model="user.name" required> </span> </br>
                </br> <span><b>Password :</b>&nbsp;&nbsp; <input type="password"
                    class="form-control" ng-model="user.password" required> </span> 
                <br><br>                
                <button class="btn btn-lg btn-primary btn-block" type="submit">
                    <b>Sign in</b>
                </button>
            </form>
        </div>
        <!-- /container -->
    </div>

请记住,如果您将 test.js 脚本放在索引中,它将在整个应用程序中。

希望对你有帮助

【讨论】:

    【解决方案2】:

    索引.html

    <html ng-app='myApp'>
    <head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"/>
    <script
        src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
    <script
        src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
    </head>
    
    <body >
        <div ng-view></div>
        <script src='test.js' type="text/javascript"></script>
    </body>
    </html>
    

    test.js

    var applog = angular.module('myApp',['ngRoute']);
    
    applog.config([ '$routeProvider', '$locationProvider',
        function($routeProvider, $locationProvider) {
            $routeProvider.when('/home', {
                templateUrl : 'home.html',
                controller : 'HomeController'
            })
            $routeProvider.when('/', {
                templateUrl : 'login.html',
                controller : 'LoginController'
            }).otherwise({
                redirectTo : 'index.html'
            });
            //$locationProvider.html5Mode(true); //Remove the '#' from URL.
        }
    ]);
    
    applog.controller("LoginController", function($scope, $location) {
        $scope.login = function() {
            var username = $scope.user.name;
            var password = $scope.user.password;
            if (username == "admin" && password == "admin") {
                $location.path("/home" );
            } else {
                alert('invalid username and password');
            }
        };
    });
    
    applog.controller("HomeController", function($scope, $location) {
    
    });
    

    登录.html

    <div id='content' ng-controller='LoginController'>
        <div class="container">
            <form class="form-signin" role="form" ng-submit="login()">
                <h3 class="form-signin-heading">Login Form</h3>
                <span><b>Username :</b>&nbsp; <input type="username"
                    class="form-control" ng-model="user.name" required> </span> </br>
                </br> <span><b>Password :</b>&nbsp;&nbsp; <input type="password"
                    class="form-control" ng-model="user.password" required> </span>
                <br><br>
                <button class="btn btn-lg btn-primary btn-block" type="submit">
                    <b>Sign in</b>
                </button>
            </form>
        </div>
        <!-- /container -->
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多