AngularJS 避繁就简的路由

前端技术 2023/09/05 JavaScript

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, function 或 array(在当前模板创建控制器,生成新的 $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\',
      controller : \'HomeCtrl\',
     })
     .when(\'/computer\', {
      templateUrl : \'computer.html\',
     })
     .when(\'/phone\', {
      templateUrl : \'phone.html\',
     })
     .when(\'/other\', {
      templateUrl : \'other.tpl.html\',
      controller : \'OtherCtrl\',
     })
   }])
   .controller(\'defaultCtrl\', function ($scope) {
    $scope.computers = [
     { id: 0, name: \"宏基\", category: \"Test\", price: 1.25 },
     { id: 1, name: \"联想\", category: \"Test\", price: 2.45 },
     { id: 2, name: \"苹果\", category: \"Test\", price: 4.25 }
    ];
    $scope.phones = [
     { id: 0, name: \"三星\", category: \"Test\", price: 1.25 },
     { id: 1, name: \"荣耀\", category: \"Test\", price: 2.45 },
     { id: 2, name: \"魅族\", category: \"Test\", price: 4.25 }
    ];
   })
   .controller(\"HomeCtrl\", function ($scope, $route) {
    $scope.$route = $route;
    $scope.data = \"Home Home\";
   })
   .controller(\"OtherCtrl\", function ($scope, $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>

单击“首页”

单击“电脑”

单击“手机”

单击“其他”

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持phpstudy。

本文地址:https://www.stayed.cn/item/12188

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。