I found a solution. Just read the $state.current
.
angular.module('constant-focus', [])
.directive('constantFocus', function($rootScope, $state) {
// http://stackoverflow.com/questions/25879759/prevent-keyboard-from-closing/25899264#25899264
return {
restrict: 'A',
scope: {
constantFocus: '=',
},
link: function($scope, element) {
const curState = $state.current;
const focusFunction = function() {
if (!$scope.constantFocus) {
unregister();
element[0].blur();
} else {
element[0].focus();
}
};
/* jslint latedef:false */
const unregister = () => {
element[0].removeEventListener('focusout', focusFunction);
};
const register = () => {
element[0].addEventListener('focusout', focusFunction);
};
$scope.$watch('constantFocus', enabled => {
if (enabled) {
register();
}
focusFunction();
});
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState) {
if (fromState === curState) {
unregister();
} else if (toState === curState) {
register();
}
});
},
};
});