发表于: 2017-07-01 22:32:25

2 909


今天完成的事情:

关于我们、联系我们的静态页面编写。

路由的搭建:

var app = angular.module("app", ['ui.router', 'oc.lazyLoad']);

app.config(function($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise("/homePage");

    $stateProvider

        .state("pageTab",{

            url: "",

            templateUrl: "views/pageTab.html",

            abstract: true,

            resolve: {

                loadMyFile: ["$ocLazyLoad", function($ocLazyLoad) {

                    return $ocLazyLoad.load(['style/page/pageTab.css'], {serie: true});

                }]

            }

        })

        .state("pageTab.homePage", {

            url: "/homePage",

            templateUrl: "views/homePage.html",

            resolve: {

                loadMyFile: ["$ocLazyLoad", function($ocLazyLoad) {

                    return $ocLazyLoad.load(['style/page/homePage.css', 'script/controller/homePage.js'], {serie: true});

                }]

            }

        })

        .state("pageTab.findJob", {

            url: "/findJob",

            templateUrl: "views/findJob.html",

            resolve: {

                loadMyFile: ["$ocLazyLoad", function($ocLazyLoad) {

                    return $ocLazyLoad.load(['style/page/findJob.css', 'script/controller/findJob.js'], {serie: true});

                }]

            }

        })

});

这里我发现了一个坑:

做任务时我们采用路由重定向的时候,都是用$urlRouterProvider.when的写法,今天我查了下资料,发现这样写是不太好的,最好的写法应该是 $urlRouterProvider.otherwise。

when()

该函数需要两个参数:1.当前的路径,2.需要重定向到的路径(或者是需要在路径被访问是运行的函数)。设置重定向前需要为$urlRouterProvider设置when函数来接受一个字符串。例如,当希望重定向一个空的路由到/inbox:

.config(function($urlRouterProvider) {

  $urlRouterProvider.when('', '/inbox');

});

如果传递的是函数,在路径被匹配时该函数会被执行,处理器返回如下3个值中的一个: - falsy,该回应告诉$urlRouter没有匹配到当前url规则,应该尝试匹配新的路径,这样能保证用户访问了正常的路径。 - 字符串,$urlRouter将该字符串当做重定向的路径。 - TRUE 或者 undefined,该回应告诉$urlRouter,url已被处理

otherwise()

和ngRoute的otherwise()函数相似,在用户提交的路径没有被定义的时候它将重定向到指定的页面。这是个创建’默认‘路径的好方法。 otherwise()只接受一个参数,要么函数要么字符串,字符串必须为合法的url路由地址,函数则会在没有任何路径被匹配的时候被运行。

.config(function($urlRouterProvider) {

  $urlRouterProvider.otherwise('/');

  // or

  $urlRouterProvider.otherwise(

    function($injector, $location) {

      $location.path('/');

    });

});

其实除了上面两种方法,还有一个方法也是可以的:

rule()

如果想越过任何URL的匹配或者在其他路由前做路由修改,则可以使用rule()函数。在使用它的时候必须返回一个合法的代表路径的字符串。

app.config(function($urlRouterProvider){

  $urlRouterProvider.rule(

    function($injector, $location) {

      return '/index';

    });

})


明天计划的事情:

继续路由的搭建,然后开始常量的编写。

遇到的问题:

暂无

收获:

ui-router重定向的三种方法


返回列表 返回列表
评论

    分享到