Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.13/angular-ui-router.min.js"></script>
</head>
<body ng-app="myApp">
  <p>Page Views for {{stateName}}: {{pageViews}}</p>
  <a ui-sref="foo">Foo</a>
  <a ui-sref="bar">Bar</a>
  <a ui-sref="baz">Baz</a>
</body>
</html>
 
angular.module('myApp', ['ui.router'])
.config(function($stateProvider) {
   $stateProvider
   .state('foo', {url:'/foo'})
   .state('bar', {url:'/bar'})
   .state('baz', {url:'/baz'})
   ;
})
.run(function($rootScope, PageViews) {
  $rootScope.$on('$stateChangeStart', function(e, toState) {
    PageViews.add(toState.name);
    $rootScope.stateName = toState.name;
    $rootScope.pageViews = PageViews.get(toState.name);
  });
})
.factory('PageViews', function() {
  localStorage.views = localStorage.views || '{}';
  return {
    add: function(stateName) {
    var views = JSON.parse(localStorage.views);
    console.log(views);
    views[stateName] = views[stateName] || 0;
    ++views[stateName];
    localStorage.views = JSON.stringify(views);
    },
    get: function(stateName) {
      var views = JSON.parse(localStorage.views);
      return views[stateName] || 0;
    }
  };
})
;
Output

This bin was created anonymously and its free preview time has expired (learn why). — Get a free unrestricted account

Dismiss x
public
Bin info
anonymouspro
0viewers