I want to validate certain condition before the browser follow the link dynamically created by ui-router.
I was looking into $rootscope.$on('$stateChangeStart', ..)
but I have no access to the controller.$scope
from there. I also need to use this in several places in the application and would be cumbersome.
Keep in mind that ui-sref
is linked to ui-sref-active
(work together), so i can't remove ui-sref
and, by say, to use $state.$go('some-state')
inside a function called with ng-click
.
The condition should be evaluated inside a $scope function
and on on-click event
(before-transition with the ability to cancel it)
I need something like this:
<li ui-sref-active=active>
<a ui-sref=somestate ui-sref-if=model.validate()>Go Somestate</a>
</li>
I tried:
<li ui-sref-active=active>
<a ui-sref=somestate ng-click=$event.preventDefault()>Go Somestate</a>
</li>
<li ui-sref-active=active>
<a ui-sref=somestate ng-click=$event.stopImmediatePropagation()>Go Somestate</a>
</li>
And
<li ui-sref-active=active>
<a ui-sref=somestate>
<span ng-click=$event.stopPropagation();>Go Somestate</span>
</a>
</li>
Even
<li ui-sref-active=active>
<a ui-sref=somestate onclick=return false;>Go Somestate</a>
</li>
But does not work.