AngularJS路由实例(uiRoute、ngRoute)

介绍

AngularJS的路由功能使得它能够在一个页面中呈现不同的视图页面。它的做法是将视图分解成布局和模板视图,并且根据用户当前访问的URL来展示对应的视图。

AngularJS 为我们封装好了一个路由工具 ngRoute ,它的实现是对URL进行匹配后去驱动视图页面显示。它也为我们封装了一个独立的路由模块 uiRouter ,它是一种靠状态 state 来驱动视图页面。

效果图

这里写图片描述

是不是很像App下方的选项卡

实例代码

方式一:ngRoute(匹配URL路径加载对应的视图页面)

home.html

<body>
    <div class="home_page">
        <!--ng-view指令告诉Angular把匹配到的视图载入到此处-->
        <div ng-view></div>

        <ul>
            <li>
                <a href="#page1">page1</a>
            </li>
            <li>
                <a href="#page2">page2</a>
            </li>
            <li>
                <a href="#page3">page3</a>
            </li>
        </ul>
    </div>
</body>

routeConfig.js

//设置模块与ngRoute的依赖关系
angular.module("ngRouteApp", ["ngRoute"])
 .config(['$routeProvider', function($routeProvider){
     $routeProvider
     //定义路由规则(若URL路径为“/page1”则加载childPage1.html),语法类似switch case default
         .when("/page1",{templateUrl : "childPage1.html"})
         .when("/page2",{templateUrl : "childPage2.html"})
         .when("/page3",{templateUrl : "childPage3.html"}) 
         .otherwise({redirectTo: "/page1"});
 }]
);

这里写图片描述
这里写图片描述

方式二:uiRoute(根据状态state加载对应的视图页面)

有三种方法来激活状态,并传递参数

  1. 调用 state.go() state.go(“TabBar.Page1”,{param: ‘value’})
  2. 点击包含ui-sref指令的链接;ui-sref=”TabBar.Page1({param1:value1})”
  3. 导航到与状态相对应的URL;

home.html

 <body>
     <div class="home_page">
         <!--ui-view指令告诉Angular把对应状态的视图载入到此处-->
         <!--state : TabBar-->
         <div ui-view=""></div>
     </div>
 </body>

pageTabBar.html

<div class="home_page">
    <!--ui-view指令告诉Angular把对应状态的视图载入到此处-->
    <div ui-view=""></div>
    <ul>
        <li>
            <!--匹配子状态Page1-->
            <a href="" ui-sref=".Page1">page1</a>
        </li>
        <li>
            <a href="" ui-sref=".Page2">page2</a>
        </li>
        <li>
            <a href="" ui-sref=".Page3">page3</a>
        </li>
    </ul>
</div>

routeConfig.js

angular.module("uiRouteApp", ["ui.router"])
       .config(
       function($stateProvider, $urlRouterProvider){
           $urlRouterProvider.otherwise("TabBar/Page1");
           $stateProvider
               //.state("状态",{url : "URL路径", templateUrl : "html"})
               .state("TabBar",{url : "/TabBar", templateUrl : "PageTabBar.html"})

               //.state("子状态",{url : "下一级URL路径", templateUrl : "子html页面"})
               .state("TabBar.Page1", {url : "/Page1", templateUrl : "childPage1.html"})
               .state("TabBar.Page2", {url : "/Page2", templateUrl : "childPage2.html"})
               .state("TabBar.Page3", {url : "/Page3", templateUrl : "childPage3.html"})

       }
   );

这里写图片描述
这里写图片描述

视图层级结构

home.html 
    state:TabBar
    <div ui-view="">pageTabBar.html</div>

                    pageTabBar.html 
                    state: TabBar.Page1
                    <div ui-view="">childPage1.html</div>
                    state: TabBar.Page2
                    <div ui-view="">childPage2.html</div>
                    state: TabBar.Page3
                    <div ui-view="">childPage3.html</div>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值