基于angular-utils-ui-breadcrumbs使用心得(分享)


Posted in Javascript onNovember 03, 2017

angular-utils-ui-breadcrumbs是一个用来自动生成面包屑导航栏的一个插件,需要依赖angular、UIRouter和bootstrap3.css。生成的界面截图如下,点击相应的面包屑会跳转到相应的路由,点击相应的路由也会自动生成相应的面包屑:

基于angular-utils-ui-breadcrumbs使用心得(分享)

安装:npm install angular-utils-ui-breadcrumbs

github:https://github.com/michaelbromley/angularUtils/tree/master/src/directives/uiBreadcrumbs

模块依赖:

var app = angular.module('myapp', ['ui.router.state.events','angularUtils.directives.uiBreadcrumbs']);

这里使用了ui.router.state.events模块,因为该uiBreadcrumbs依赖于$stateChangeSuccess事件,而uiRouter在1.x版本之后推荐使用Transition钩子,为了兼容原来的版本,将不被推荐的state events事件封装到了stateEvent.js文件中,该文件在UIRouter包中,所以我们需要引入该文件,angularUtils.directives.uiBreadcrumbs模块已经依赖了ui.router模块,我们不需要在这里重复引入。

文件目录结构如下:

基于angular-utils-ui-breadcrumbs使用心得(分享)

<!--index.html-->
<!DOCTYPE html>
<html lang="en" ng-app="myapp" ng-strict-di>
<head>
 <meta charset="UTF-8">
 <title>angular-utils-ui-breadcrumbs</title>
 <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet">
</head>
<body>
<ui-breadcrumbs displayname-property="data.displayName" abstract-proxy-property="data.proxy" template-url="./uiBreadcrumbs.tpl.html"></ui-breadcrumbs>
<ui-view name="home"></ui-view>
</body>
<script src="https://cdn.bootcss.com/angular.js/1.6.0/angular.min.js"></script>
<script src="https://cdn.bootcss.com/angular-ui-router/1.0.3/angular-ui-router.min.js"></script>
<script src="stateEvents.js"></script>
<script src="uiBreadcrumbs.js"></script>
<script src="index.js"></script>
</html>
//index.js
var app = angular.module('myapp', ['ui.router.state.events','angularUtils.directives.uiBreadcrumbs']);

app.config(['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) =>{
 $urlRouterProvider.otherwise('/home/production');
 $stateProvider
  .state('home', {
   abstract: true,
   url: '/home',
   data: {
    proxy: 'home.info'
   },
   views: {
    'home@': {
     template: '<div ui-view="content"></div>'
    }
   }
  })
  .state('home.info', {
   url: '/info',
   data: {
    displayName: 'home'
   },
   views: {
    'content@home': {
     template: '<a ui-sref="^.production">production</a>'
    }
   }
  })
  .state('home.production', {
   url: '/production',
   data: {
    displayName: 'production'
   },
   views: {
    'content@home': {
     template: '<a ui-sref=".fruits">fruits</a>'
    }
   }
  })
  .state('home.production.fruits', {
   url: '/fruits',
   data: {
    displayName: 'fruits'
   },
   views: {
    'content@home': {
     template: `<ul>
      <li><a ui-sref=".detail({type: 'apple'})">apple</a></li>
      <li><a ui-sref=".detail({type: 'banane'})">banane</a></li>
      <li><a ui-sref=".detail({type: 'pear'})">pear</a></li>
     </ul>`
    }
   }
  })
  .state('home.production.fruits.detail', {
   url: '/:type',
   data: {
    displayName: 'detail'
   },
   views: {
    'content@home': {
     template: '<div>{{$resolve.fruit}}</div>'
    }
   },
   resolve: {
    fruit: ['$stateParams', $stateParams =>{
     return $stateParams.type
    }]
   }
  })
}]);

下面详细说明一下该插件的使用方法:

<ui-breadcrumbs displayname-property="data.displayName"
    [template-url=""]
    [abstract-proxy-property=""]>
</ui-breadcrumbs>

dispalyname-property:(必须的),该属性指向了你声明路由时候的state配置对象的某个属性,该属性的值就是在该路由下面包屑会展示的值,如果没有指定,将会展示state的name属性。

template-url: (可选)指定uiBreadcrumbs.tpl.html的路径,该文件是ui-breadcrumbs指令的模版,如果不指定,将默认使用以下目录,以下是源码的内容:

  var moduleName = 'angularUtils.directives.uiBreadcrumbs';
 var templateUrl = 'directives/uiBreadcrumbs/uiBreadcrumbs.tpl.html';

 /**
  * Module
  */
 var module;
 try {
  module = angular.module(moduleName);
 } catch(err) {
  // named module does not exist, so create one
  module = angular.module(moduleName, ['ui.router']);
 }

abstract-proxy-property: (可选),当使用abstract state的时候,我们是不能够transition到该状态的。因此我们就不能够展示该状态的面包屑,因为当点击一个abstract state将会导致一个异常,所以为了解决这种情况,我们可以让abstract-proxy-property指向一个state config属性,该属性的值是某个state.name,即某个路由,当需要显示abstract state的面包屑的时候,将会寻找该state.name来代替该abstract state,如以上例子,我们指定了home.info这个状态。

以上这篇基于angular-utils-ui-breadcrumbs使用心得(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
你的编程语言可以这样做吗?
Sep 07 Javascript
基于jQuery替换table中的内容并显示进度条的代码
Aug 02 Javascript
jquery实现动态菜单的实例代码
Nov 28 Javascript
页面实时更新时间的JS实例代码
Dec 18 Javascript
javascript使用数组的push方法完成快速排序
Sep 15 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
Jan 23 Javascript
简单的网页广告特效实例
Aug 19 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
其实你可以少写点if else与switch(推荐)
Jan 10 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
详解JavaScript 的变量
Mar 08 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 #Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 #Javascript
微信小程序自动客服功能
Nov 02 #Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 #Javascript
微信小程序实现图片放大预览功能
Oct 22 #Javascript
极简主义法编写JavaScript类
Nov 02 #Javascript
利用nvm管理多个版本的node.js与npm详解
Nov 02 #Javascript
You might like
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
PHP中的self关键字详解
2019/06/23 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
详解Python中的测试工具
2019/06/09 Python
简单的Python调度器Schedule详解
2019/08/30 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
软件配置管理有什么好处
2015/04/15 面试题
历史专业个人求职信分享
2013/12/20 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
物业管理工作方案
2014/05/10 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
会员卡清退活动总结
2014/08/27 职场文书
2014年财政局工作总结
2014/12/09 职场文书
投资合作意向书范本
2015/05/08 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
德劲DE1105机评
2022/04/05 无线电