javascript - angularjs中的随页面变化的导航
PHP中文网
PHP中文网 2017-04-11 13:28:09
[JavaScript讨论组]

项目现在用的是angular(1.x)。自己写了一个导航指令,但是导航在路由逻辑之外

在ng-view外面,现在想让导航条随着页面url的变化,有一个指示(就是表示在当行的哪一个栏目)。

我在推荐就推荐变灰,我在视频就视频变灰

我的办法是每一个控制器的最前面写一个 scope.selectNav变成对应的数字(例如在视频selectNav为3),然后在导航指令中用ng-class控制,可是由于指令写在控制器之外,每次路由切换指令不会重载,有没有什么办法可以让selectNav一改变,导航指令的样式就跟着改变

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
高洛峰

看看这是不是你要的:

nav.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Nav</title>
    <link rel="stylesheet" href="css/nav.css">
</head>

<body ng-app="navApp" ng-controller="navCtrl">
    <p class="container">
        <nav-bar></nav-bar>
        <p ui-view class="content"></p>
    </p>
</body>
<script src="angular/angular.js"></script>
<script src="angular-ui-router/release/angular-ui-router.js"></script>
<script src="js/nav.js"></script>
</html

tab.html

<ul class="nav clearfix">
    <li ng-repeat="tab in tabs"><a ui-sref="{{tab|lowercase}}" ui-sref-active="active">{{tab}}</a></li>
</ul>

nav.js

angular.module('navApp',['ui.router'])
    .config(function($stateProvider,$urlRouterProvider){
        $urlRouterProvider.otherwise('/home');
        $stateProvider
            .state('home',{
                url: '/home',
                template: '<p>Welcome to home page!</p>'
            })
            .state('recommend',{
                url: '/recommend',
                template: '<p>recommend</p>'
            })
            .state('videos',{
                url: '/videos',
                template: '<p>videos</p>'
            })
            .state('shopping',{
                url: '/shopping',
                template: '<p>shopping</p>'
            })
    })
    .directive('navBar', function(){
        return {
            restrict: 'EA',
            scope:{},
            templateUrl: '../views/tab.html',
            controller: function($scope){
                $scope.tabs = ['Home','Recommend','Videos','Shopping'];
            }
        }
    })
    .controller('navCtrl', function($scope){

    })

app.js

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(express.static('./public'));
app.use(express.static('./node_modules'));

var PORT = process.env.PORT || 8000;

app.listen(PORT, ()=>{
    console.log('server running on port: ' + PORT);
});
app.get('/nav', (req,res)=>{
    res.sendFile(__dirname + '/public/views/nav.html');
});

nav.css

*{padding: 0;margin: 0;color: #333;}
ul{list-style: none;}
a{
    color: inherit;
    text-decoration: none;
}
.clearfix{zomm:1;clear: both;}
.clearfix:after{
    content: "";
    display: block;
    clear: both;
    overflow: hidden;
    height: 0;
}
.container{
    margin: 100px auto;
    width: 400px;
    border: 1px solid #ddd;
}
.nav{margin-bottom: 10px;border-bottom: 1px solid #ddd;}
.nav li{
    float: left;
    width: 25%;
    box-sizing: border-box;
    text-align: center;
    border-right: 1px solid #ddd;
}
.nav li:last-child{border-right: 0;}
.nav li a{display: block;padding: 5px 0;}
.nav li a:hover{background-color: lightgray;}
.content{
    min-height: 200px;
}
.active{background-color: lightgray;}

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号