如何使用ui-router? 

小课堂

分享人:万登胜

1、创建页面

2、导入js文件

3、嵌套路由

4、通过views实现多视图,嵌套页面跳转

5、UI-ROUTER相较与NG-ROUTER的优点

1、创建页面

要实现上文那个demo效果,我们需要创建如下页面: app.js 这是路由的配置页面 index.html 通常叫做index.html是单页面的首页,里面导入了各种css样式、库,插件,框架之类的。 PageTab.html 进入index.html首先展示的视图页面,下面几个是PageTab下面的嵌套页面 Page-1.html Page-2.html Page-3.html

2、导入js文件

script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.js"

script src="https://cdn.bootcss.com/angular-ui-router/1.0.0-rc.1/angular-ui-router.min.js"

3、嵌套路由

                    
         var myApp = angular.module("myApp", ["ui.router"]);
//这里叫做App模块,这将告诉HTML页面这是一个AngularJS作用的页面,并把ui-router注入AngularJS主模块,它的内容由AngularJS引擎来解释。
myApp.config(function ($stateProvider, $urlRouterProvider) {
    //这一行声明了把 $stateProvider 和 $urlRouteProvider 路由引擎作为函数参数传入,这样我们就可以为这个应用程序配置路由了.
    $urlRouterProvider.when("", "/PageTab");
    //如果没有路由引擎能匹配当前的导航状态,默认将路径路由至 PageTab.html, 那它就像switch case语句中的default选项.就是一个默认的视图选项
    $stateProvider
        //这一行定义了会在main.html页面第一个显示出来的状态(就是进入页面先加载的html),作为页面被加载好以后第一个被使用的路由.
        .state("PageTab", {//导航用的名字
            url: "/PageTab",//#+标识符,这里就是url地址栏上面的标识符,通过标识符,进入不同的html页面
            templateUrl: "PageTab.html"//这里是html的路径,这是跟标识符相对应的html页面
        })
        .state("PageTab.Page1", {//引号里面代表Page1是PageTab的子页面,用.隔开
            url:"/Page1",
            templateUrl: "Page-1.html"
        })
        .state("PageTab.Page2", {//需要跳转页面的时候,就是用这双引号里面的地址
            url:"/Page2",
            templateUrl: "Page-2.html"
        })
        .state("PageTab.Page3", {
            url:"/Page3",
            templateUrl: "Page3.html"
        });
});
                    
                    

4、通过views实现多视图

在ui-view=""的双引号里面,ui-view展示的页面是根据app.js设置的url对应的html来展示的
嵌套页面跳转
导航里面的名字必须是“父页面的名字.子页面的名字”

                
                    

下面这几个按钮是在主页面下面再嵌套一层的页面

Page-1 Page-2 Page-3

5、UI-Route相较与ng-router的优点


视图不能嵌套,这意味着$scope会发生不必要的重新载入。
同一URL下不支持多个视图。这一需求也是常见的:我们希望导航栏用一个视图(和相应的控制器)、内容部分用另一个视图(和相应的控制器)。

感谢大家观看

BY : 万登胜