angular.module('ConsoleUIApp', ['ui.router','ui.bootstrap'])
.config(function ($stateProvider, $urlRouterProvider, $httpProvider) { // For any unmatched url, redirect to /state1
$urlRouterProvider.otherwise("/home"); $stateProvider
.state('home', {
url: "/home",
templateUrl: "views/home.html",
controller: 'HomeCtrl'
})
})
.run(function($rootScope, $state, $stateParams) {
// previous state handling
$rootScope.previousState = {};
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
// store previous state in $rootScope
$rootScope.previousState.name = fromState.name;
$rootScope.previousState.params = fromParams;
});
});
back-button
directive :
yourModule.directive('backButton', [
'$rootScope',
'$state',
'$parse',
function($rootScope, $state, $parse) {
return {
restrict: 'EA',
link: function(scope, el, attrs) {
var defaultState
, defaultStateParams; el.click(function() {
var stateName
, stateParams; if ($rootScope.previousState.name) {
stateName = $rootScope.previousState.name;
stateParams = $rootScope.previousState.params;
}
else {
stateName = defaultState;
stateParams = defaultStateParams;
} if (stateName)
$state.go(stateName, stateParams);
}); attrs.$observe('defaultState', function() {
defaultState = attrs.defaultState;
});
attrs.$observe('defaultStateParams', function() {
defaultStateParams = $parse(attrs.defaultStateParams)(scope);
}); $rootScope.$watch('previousState', function(val) {
el.attr('disabled', !val.name && !defaultState);
});
}
};
}]);
https://github.com/angular-ui/ui-router/issues/92