加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS 避繁就简的路由

发布时间:2020-12-17 10:33:33 所属栏目:安全 来源:网络整理
导读:AngularJS 路由允许我们通过不同的 URL 访问不同的内容。 通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。 通常我们的URL形式为 http://runoob.com/first/page,但在单页Web应用中 AngularJS 通过 # + 标记 实现,例如:

AngularJS 路由允许我们通过不同的 URL 访问不同的内容。

通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。

通常我们的URL形式为 http://runoob.com/first/page,但在单页Web应用中 AngularJS 通过 # + 标记 实现,例如:

http://runoob.com/#/first
http://runoob.com/#/second
http://runoob.com/#/third

先看看$routeProvider 的配置对象属性方法:

路由设置对象解析:

$routeProvider.when(url(路由名称),{
    template: string(模板提示字符串),templateUrl: string(模板路径URL),controller: string,functionarray(在当前模板创建控制器,生成新的 $scope 作用域),controllerAs: string(控制器别名),redirectTo: string,function(重定向地址),resolve: object<key,function>(当前路由所依赖的模块)
});

实现路由的大致步骤:

第一步:导入ngRoute模块

<script type="text/javascript" src="js/angular-route.min.js"></script>

第二步:在应用模块中使用ngRoute

angular.module("routeApp",["ngRoute"])

第三步:使用 ng-view 指令

<div ng-view class="well" ng-controller='defaultCtrl'></div>

第四步:配置 $routeProvider 路由规则

...
.config(['$routeProvider',function ($routeProvider){
    $routeProvider
        .when('/home',{
            templateUrl : 'home.tpl.html',controller : 'HomeCtrl',})
        .when('/computer',{
            templateUrl : 'computer.html',})
        .when('/phone',{
            templateUrl : 'phone.html',})
        .when('/other',{
            templateUrl : 'other.tpl.html',controller : 'OtherCtrl',})
}])
...

第五步:通过超链接使用路由

<ul class="nav nav-tabs">
    <li><a href="#/home">首页</a></li>
    <li><a href="#/computer">电脑</a></li>
    <li><a href="#/phone">手机</a></li>
    <li><a href="#/other">其他</a></li>
</ul>

完整案例:
1 route.html页面

<html> <head> <meta charset="utf-8"> <title>AngularJS 路由实例</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> </head> <body ng-app='routeApp'> <ul class="nav nav-tabs"> <li><a href="#/home">首页</a></li> <li><a href="#/computer">电脑</a></li> <li><a href="#/phone">手机</a></li> <li><a href="#/other">其他</a></li> </ul> <div ng-view class="well" ng-controller='defaultCtrl'></div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/angular.min.js"></script> <script type="text/javascript" src="js/angular-route.min.js"></script> <script type="text/ng-template" id="home.tpl.html"> <h1>{{data}}</h1> </script> <script type="text/ng-template" id="other.tpl.html"> <h1>{{data}}</h1> </script> <script type="text/javascript"> angular.module("routeApp",["ngRoute"]) .config(['$routeProvider',function ($routeProvider){ $routeProvider .when('/home',{ templateUrl : 'home.tpl.html',}) .when('/computer',{ templateUrl : 'computer.html',}) .when('/phone',{ templateUrl : 'phone.html',}) .when('/other',{ templateUrl : 'other.tpl.html',}) }]) .controller('defaultCtrl',function ($scope) { $scope.computers = [ { id: 0,name: "宏基",category: "Test",price: 1.25 },{ id: 1,name: "联想",price: 2.45 },{ id: 2,name: "苹果",price: 4.25 } ]; $scope.phones = [ { id: 0,name: "三星",name: "荣耀",name: "魅族",price: 4.25 } ]; }) .controller("HomeCtrl",function ($scope,$route) { $scope.$route = $route; $scope.data = "Home Home"; }) .controller("OtherCtrl",$route) { $scope.$route = $route; $scope.data = "Other Other"; }) </script> </body> </html>

2.computer.html 页面

<div class="panel-body"> <table class="table table-striped table-hover"> <thead> <tr> <th>名称</th> <th>类别</th> <th class="text-right">价格</th> <th>{{data}}</th> </tr> </thead> <tbody> <tr ng-repeat="item in computers"> <td>{{item.name}}</td> <td>{{item.category}}</td> <td class="text-right">{{item.price | currency}}</td> <td class="text-center"> <button class="btn btn-xs btn-primary" ng-click="deleteProduct(item)">删除</button> <a href="/edit/{{item.id}}" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct(item)">编辑</a> <button class="btn btn-xs btn-primary" ng-click="incrementPrice(item)">+</button> </td> </tr> </tbody> </table> <div> <button class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">添加</button> <a href="create" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">Add</a> </div> </div>

3.phone.html 页面

<div class="panel-body"> <table class="table table-striped table-hover"> <thead> <tr> <th>名称</th> <th>类别</th> <th class="text-right">价格</th> <th>{{data}}</th> </tr> </thead> <tbody> <tr ng-repeat="item in phones"> <td>{{item.name}}</td> <td>{{item.category}}</td> <td class="text-right">{{item.price | currency}}</td> <td class="text-center"> <button class="btn btn-xs btn-primary" ng-click="deleteProduct(item)">删除</button> <a href="/edit/{{item.id}}" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct(item)">编辑</a> <button class="btn btn-xs btn-primary" ng-click="incrementPrice(item)">+</button> </td> </tr> </tbody> </table> <div> <button class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">添加</button> <a href="create" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">Add</a> </div> </div>

单击“首页”

单击“电脑”

单击“手机”

单击“其他”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读