我想在浏览器遵循ui-router动态创建的链接之前验证某些条件.
我正在调查,$rootscope.$on('$stateChangeStart', ..)但我无法访问controller.$scope那里.我还需要在应用程序的几个地方使用它,并且会很麻烦.
请记住ui-sref链接到ui-sref-active(一起工作),所以我不能删除,ui-sref并且说,$state.$go('some-state')在一个名为with的函数内使用ng-click.
应该在a $scope function和a之内评估条件on-click event(在转换之前能够取消它)
我需要这样的东西:
<li ui-sref-active="active">
<a ui-sref="somestate" ui-sref-if="model.validate()">Go Somestate</a>
</li>
Run Code Online (Sandbox Code Playgroud)
我试过了:
<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>
Run Code Online (Sandbox Code Playgroud)
和
<li ui-sref-active="active">
<a ui-sref="somestate">
<span ng-click="$event.stopPropagation();">Go Somestate</span>
</a>
</li>
Run Code Online (Sandbox Code Playgroud)
甚至
<li ui-sref-active="active">
<a ui-sref="somestate" onclick="return false;">Go Somestate</a>
</li>
Run Code Online (Sandbox Code Playgroud)
但是不起作用.
我有以下代码将html添加到变量.但是,当它显示在页面上时,链接不起作用.
ui-sref在动态插入链接时获取链接的最佳方法是什么?
JAVASCRIPT
.controller('page', function($scope, $rootScope, $http, $state, $sce) {
$scope.message = $sce.trustAsHtml('A <a ui-sref="login">login</a> link');
})
Run Code Online (Sandbox Code Playgroud)
HTML
<div ng-bind-html="message"></div>
Run Code Online (Sandbox Code Playgroud) 我有一个有2种状态的应用程序:
profilesettings我有一个链接在我的整个应用程序中重复:
<a ui-sref="profile({id:profile.id})" ui-sref-active="active">Current state + ID</a>
Run Code Online (Sandbox Code Playgroud)
如何更改ui-sref为动态?- 表示当前状态以及我想要的当前stateParam(即id)
在找到解决方案时,请记住我想要能够使用,ui-sref-active所以我宁愿避免点击这样的东西.