AngualrJS中的Directive制作一个菜单


Posted in Javascript onJanuary 26, 2016

说下我经常写菜单的方式:

<ul>
<li data-ng-class="{'active': highlight('/orders')}">
<a href="#/orders">Orders</a>
</li>
</ul>

菜单项是否高亮显示取决于controller中的highlight方法。

vm.highlight = funciton(path){
return $locaiton.path().substr(0, path.lenght) === path;
}

如果以Directive的方式会更简洁。

<ul menu-highlighter highlight-class-name="active">
<li><a href="#/customers">Customers</a></li>
<li><a href="#/orders">Customers</a></li>
<li><a href="#/about">Customers</a></li>
</ul>

Directive大致是:

(function(){
var injectParams = ['$location'];
var menuHighlighter = function($location){
var link = function(scope, element){
function setActive(){
var path = $location.path();
var className = scope.highlightClassName || 'active';
if(path){
angular.forEac(element.find('li'), function(li){
//<a href="#/customers">Customers</a>
var anchor = li.querySelector('a');
//#/customers
var href=(anchor && anchor.href) ? anchor.href : anchor.getAttribute('data-href').replace('#','');
//customers
var trimmedHref = href.substr(href.indexOf('#/')+1, href.length);
var basePath = path.substr(0, trimmedHref.length);
if(trimmedHref === basePath){
angular.element(li).addClass(className);
} else {
angular.element(li).removeClass(className);
}
});
} 
}
setActive();
scope.$on('$locationChangeSuccess', setActive);
};
return {
restrict: 'A',
scope: {
highlightClassName: '@'
},
link: link
}
};
menuHighlighter.$inject = injectParams;
angular.module('my.directives')
.directive('menuHighlighter', menuHighlighter);
}());

以上内容是针对AngualrJS中的Directive制作一个菜单的相关知识,希望对大家有所帮助。

Javascript 相关文章推荐
线路分流自动跳转代码;希望对大家有用!
Dec 02 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
Oct 21 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
javascript滚轮控制模拟滚动条
Oct 19 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
JS+canvas绘制的动态机械表动画效果
Sep 12 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
Apr 25 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
微信小程序与后台PHP交互的方法实例分析
Dec 10 Javascript
关于vue.js中实现方法内某些代码延时执行
Nov 14 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 #Javascript
详解javascript new的运行机制
Jan 26 #Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 #Javascript
基于JavaScript实现瀑布流布局(二)
Jan 26 #Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 #Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 #Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
Jan 26 #Javascript
You might like
递归列出所有文件和目录
2006/10/09 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
PDO实现学生管理系统
2020/03/21 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
arguments对象
2006/11/20 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
公共艺术专业自荐信
2014/09/01 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB
教你部署vue项目到docker
2022/04/05 Vue.js