<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 xKeyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |