基于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 相关文章推荐
JS实现打开本地文件或文件夹
Mar 09 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
jQuery中$.fn的用法示例介绍
Nov 05 Javascript
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
使用jquery解析XML示例代码
Sep 05 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
JavaScript为事件句柄绑定监听函数实例详解
Dec 15 Javascript
js获取页面及个元素高度、宽度的代码
Apr 26 Javascript
JavaScript基础重点(必看)
Jul 09 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
基于Vue实现图书管理功能
Oct 17 Javascript
用Node提供静态文件服务的方法
Jul 06 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
js实现带按钮的上下滚动效果
2015/05/12 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
VueJs组件之父子通讯的方式
2018/05/06 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
使用Python进行目录的对比方法
2018/11/01 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
网络信息安全承诺书
2014/03/26 职场文书
小学二年级评语
2014/04/21 职场文书
党建工作整改措施
2014/10/28 职场文书
教师群众路线心得体会
2014/11/04 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android