Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. 'use strict';
  2.  
  3. /**
  4. * @ngdoc directive
  5. * @name onepmApp.directive:isActive
  6. * @description
  7. * # isActive
  8. */
  9. angular.module('onepmApp')
  10. .directive('isActive', function ($state, $log, $compile) {
  11. return {
  12. restrict: 'A',
  13. scope: true,
  14. compile: function (element, attributes) {
  15. var url = element.find('a[ui-sref]').attr('ui-sref').match(/[a-z.]*/) || [],
  16. bindKlass = attributes.isActive === 'is-active' ? 'active' : attributes.isActive;
  17. element.removeAttr('is-active'); // necessary to avoid infinite compile loop
  18. element.attr('ng-class', '{ "' + bindKlass + '": active }');
  19.  
  20. function link($scope) {
  21. $scope.url = url[0];
  22. $compile(element)($scope);
  23. }
  24. return link;
  25. },
  26. controller: function ($scope, $rootScope, $timeout) {
  27. function setClass (urlString) {
  28. var url = $scope.url;
  29. $scope.active = !url.indexOf(urlString);
  30.  
  31. if ( url.split('.')[1] === 'index' && url.split('.')[0] === urlString.split('.')[0]) {
  32. $scope.active = true;
  33. }
  34. }
  35. // After state change
  36. $rootScope.$on('$stateChangeSuccess', function(event, toState){
  37. setClass(toState.name);
  38. });
  39. // Browser refresh
  40. $timeout(function() {
  41. setClass($state.current.name);
  42. }, 500);
  43. }
  44. };
  45. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement