Я хочу проверить некоторые условия перед тем, как браузер будет следовать за динамикой, созданной ui-router.
Я смотрел $rootscope.$on('$stateChangeStart', ..)
, но у меня нет доступа к controller.$scope
. Я также должен использовать это в нескольких местах в приложении и будет громоздким.
Имейте в виду, что ui-sref
связан с ui-sref-active
(работать вместе), поэтому я не могу удалить ui-sref
и, скажем, использовать $state.$go('some-state')
внутри функции с ng-click
.
Условие должно быть оценено внутри a $scope function
и на on-click event
(перед переходом с возможностью его отмены)
Мне нужно что-то вроде этого:
<li ui-sref-active="active">
<a ui-sref="somestate" ui-sref-if="model.validate()">Go Somestate</a>
</li>
Я пробовал:
<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>
и
<li ui-sref-active="active">
<a ui-sref="somestate">
<span ng-click="$event.stopPropagation();">Go Somestate</span>
</a>
</li>
Даже
<li ui-sref-active="active">
<a ui-sref="somestate" onclick="return false;">Go Somestate</a>
</li>
Но не работает.