zoukankan      html  css  js  c++  java
  • AngularJS-app.js

    app.js文件是angularjs的主入口,在这里会引用项目中的各个模块,进行一些配置。路由模块也可放到这里。

    angular.module('liveApp',
        ['liveApp.controllers',
            'liveApp.services',
            'liveApp.directives',
            //'liveApp.filters',
            'liveApp.constants',
            'ui.router',
            'ui.bootstrap',
            'ng-iscroll',
            'ngAnimate'
        ])

    然后进行项目的一些配置,如:

    .run(['$rootScope','$location', 'socket', function ($rootScope, $location, socket) {
            //监控路由的跳转成功后触发
            $rootScope.$on('$stateChangeSuccess', function (event, to, toParams, from, fromParams) {
                //如果要进入的页面不是直播的页面,并且原页面是直播页面,那么关闭socket服务
                if (to.name !== 'liveroom' && to.name !== 'myliveroom') {
                    if (from.name === 'liveroom' || from.name === 'myliveroom') {
                        socket.emit('close');
                    }
                }
                else {
                   // socket.emit('loadData');
                }
            })
            //在路由跳转前触发
            $rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {
                if(angular.isDefined($rootScope.loginCheck)){
                    //判断用户是否进行登录,同时也对需要登录验证的页面进行判断,也就是说当进入需要登录的页面时,必须已经进行登录验证后才可以
                    if (!$rootScope.loginCheck && toState.data.loginCheck) {
                        //$location.path('/');
                        event.preventDefault();
                        window.location.href="/#/login";
                        //$location.path('/');
                        //  $rootScope.$emit('needLogin');
                    }
                }
                else{
                   // window.location.href="/#/login";
                }
            })
        }])

    上面是对路由添加了一些逻辑,其中run方法是在所有模块加载完成后以及解析完他们的依赖后才会被调用。并且只会调用一次。

    下面看一下angular-ui的基本路由配置:

      .config(function ($stateProvider, $urlRouterProvider) {
            $stateProvider
                .state('main', {
                    url: '/main',
                    templateUrl: './views/main.html',
                    controller: 'mainCtrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('main.index_1', {
                    url: '/index_1',
                    templateUrl: './views/mainView/index_1.html',
                    controller: 'mainIndex1Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('main.index_2', {
                    url: '/index_2',
                    templateUrl: './views/mainView/index_2.html',
                    controller: 'mainIndex2Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('main.index_3', {
                    url: '/index_3',
                    templateUrl: './views/mainView/index_3.html',
                    controller: 'mainIndex3Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('main.index_4', {
                    url: '/index_4',
                    templateUrl: './views/mainView/index_4.html',
                    controller: 'mainIndex4Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('divertingmain', {
                    url: '/divertingmain',
                    templateUrl: 'views/divertings/divertingmain.html',
                    controller: 'divertingMainCtrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('divertingmain.index_1', {
                    url: '/index_1',
                    templateUrl: './views/divertingMainView/index_1.html',
                    controller: 'divertingMainIndex1Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('divertingmain.index_2', {
                    url: '/index_2',
                    templateUrl: './views/divertingMainView/index_2.html',
                    controller: 'divertingMainIndex2Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('divertingmain.index_3', {
                    url: '/index_3',
                    templateUrl: './views/divertingMainView/index_3.html',
                    controller: 'divertingMainIndex3Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('divertingmain.index_4', {
                    url: '/index_4',
                    templateUrl: './views/divertingMainView/index_4.html',
                    controller: 'divertingMainIndex4Ctrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('liveroom', {
                    url: '/liveroom/:roomid',
                    templateUrl: './views/rooms/liveroom.html',
                    controller: 'liveRoomCtrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('myliveroom', {
                    url: '/myliveroom/:roomid',
                    templateUrl: './views/rooms/myliveroom.html',
                    controller: 'myLiveRoomCtrl',
                    data: {
                        loginCheck: true
                    }
                })
                .state('register', {
                    url: '/register',
                    templateUrl: 'views/register.html',
                    controller: 'registerCtrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('addliveroom', {
                    url: '/addliveroom',
                    templateUrl: 'views/rooms/addliveroom.html',
                    controller: 'addliveroomCtrl',
                    data: {
                        loginCheck: true
                    }
                })
                .state('addliveroomphoto', {
                    url: '/addliveroomphoto/:roomid',
                    templateUrl: 'views/rooms/addliveroomphoto.html',
                    controller: 'addliveroomphotoCtrl',
                    data: {
                        loginCheck: true
                    }
                })
                .state('myroomlist', {
                    url: '/myroomlist',
                    templateUrl: 'views/rooms/myroomlist.html',
                    controller: 'myRoomListCtrl',
                    data: {
                        loginCheck: true
                    }
                })
                .state('login', {
                    url: '/login',
                    templateUrl: 'views/login.html',
                    controller: 'loginCtrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('my', {
                    url: '/my',
                    templateUrl: 'views/my.html',
                    controller: 'myCtrl',
                    data: {
                        loginCheck: false
                    }
                })
                .state('userinfo', {
                    url: '/userinfo',
                    templateUrl: 'views/users/userinfo.html',
                    controller: 'userInfoCtrl',
                    data: {
                        loginCheck: true
                    }
                })
                .state('discovermain', {
                    url: '/discovermain',
                    templateUrl: 'views/discovers/discovermain.html',
                    controller: 'discoverMainCtrl',
                    data: {
                        loginCheck: false
                    }
                })
            $urlRouterProvider.otherwise('/login');
        });

    angular-ui的路由比原有的路由更为强大,也更为方便,所以在项目中普遍是用这个路由进行配置。其中需要解释的一个参数就是data,data里的变量loginCheck,是代表这个页面是否需要登录验证。

    最后一行的otherwise表示没有匹配的路由项进入到登录页面。

  • 相关阅读:
    Serialize and Deserialize Binary Tree
    sliding window substring problem汇总贴
    10. Regular Expression Matching
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第七章 链接
    程序员如何写一份合格的简历?(附简历模版)
    9个提高代码运行效率的小技巧你知道几个?
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第六章 存储器层次结构
    24张图7000字详解计算机中的高速缓存
    《深入理解计算机系统》(CSAPP)实验四 —— Attack Lab
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第五章 优化程序性能
  • 原文地址:https://www.cnblogs.com/y8932809/p/6225095.html
Copyright © 2011-2022 走看看