AngularJS 子路由与多视图

2017-06-08  本文已影响0人  GodlinE

ui-router 的使用

var app = angular.module('app',['ui.router']);
app.config(['$stateProvider','urlRouterProvider',function(){
    //在代码中路由切换是以 state 进行的
    $stateProvider.state('home',{
        url:'/home/:id',
        template:'<h1>首页</h1>',
        controller:'xmgController'
    }).state('my',{
        url:'/my/:id',
        template:'<h1>my</h1>',
    }).state('contact',{
        url:'/contact/:id',
        template:'<h1>contact</h1>',
        controller:'xmgController'
    });
    $urlRouterProvider.otherwise('home/1')
}])
//这里不是 routeParams 是 stateParams
app.controller('xmgController',['$scope','$stateParams',function($scope,$stateParams){
    $scope.name = '123';
    console.log($stateParams.id)
}]

<div>
    <ul>
        // ui-sref-active 把当前选中的路由添加样式,没选中的不添加,ui-Router 中不用 href 用 ui-sref
        <li><a ui-sref-active="active" ui-sref="home({id:1})">首页</a></li>
        <li><a ui-sref-active="active" ui-sref="my({id:2})">关于我们</a></li>
        <li><a ui-sref-active="active" ui-sref="contact({id:3})">联系我们</a></li>
    </ul>
</div>

多视图

app.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){
    $stateProvider.state('index',{
        url:'/index',
        //这里是 views 不是 view 注意
        views:{
            head:{
                template:'<h1>头部</h1>'
            },
            left:{
                template:'<h1>左侧</h1>'
            },
            right:{
                template:'<h1>右侧</h1>'
            },
        }
    }) ;
    $urlRouteProvider.otherwise('/index');
}])

<div ui-view = 'head'></div>
<div>
    <div ui-view = 'left'></div>
    <div ui-view = 'right'></div>
</div>

路由嵌套

  app.config(['$stateProvider','$urlRouterProvider',function ($stateProvider,$urlRouterProvider) {
            //在代码中路由切换都是以state进行。
            $stateProvider.state('home',{
                url:'/home',
                templateUrl:'home_tpl.html',
                controller:'xmgController'
            }).state('home.login',{
                url:'/login',
                template:'<h1>登录信息</h1>'
            }).state('home.regist',{
                url:'/regist',
                template:'<h1>注册信息</h1>'
            }).state('my',{
                url:'/my',
                template:'<h1>my</h1>'
            }).state('contact',{
                url:'/contact',
                template:'<h1>contact</h1>'
            });
            $urlRouterProvider.otherwise('home');  //(设置默认url)
        }]);

        //2.创建控制器
        app.controller('xmgController', ['$scope','$state','$stateParams', function ($scope,$state,$stateParams) {
            $state.go('home.login');
        }]);

home_tpl.html

<h1>首页</h1>
<a ui-sref="home.login">登录</a>
<a ui-sref="home.regist">注册</a>

<div ui-view>

</div>
上一篇下一篇

猜你喜欢

热点阅读