我需要在导航菜单时设置定位标记内的上一个状态。这是我的代码:
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li ui-sref-active="active"><a ui-sref=".profile">College Profile</a></li>
<li ui-sref-active="active"><a ui-sref=".stream">College stream</a></li>
<li ui-sref-active="active"><a ui-sref=".dept">College Department</a></li>
<li class="dropdown " ui-sref-active="active">
<a ui-sref="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Resource Management <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a ui-sref="#">Add User Role</a></li>
<li><a ui-sref="#">Add Course</a></li>
<li><a ui-sref="#">Add Section</a></li>
<li><a ui-sref="#">Add Session</a></li>
<li><a ui-sref="#">Add Semester</a></li>
<li><a ui-sref="#">Add Unit</a></li>
</ul>
</li>
<li ui-sref-active="active"><a ui-sref=".usermanagement">User Management</a></li>
<li ui-sref-active="active"><a ui-sref=".role">User Role</a></li>
</ul>
</div>
在此代码中,用户将在单击“资源管理”菜单时需要。此菜单将处于活动状态,而其他菜单将不处于活动状态(这里我使用活动类来突出显示该菜单),并且将仅显示先前的状态页面。
由于它具有一些子菜单,因此这些子菜单将显示在下拉列表中。在这种情况下,所有操作均正常进行,但会引发以下错误,并且此菜单上也没有cursor:pointer
属性。
错误:
Error: Could not resolve '#' from state 'dashboard'
at Object.t.transitionTo (angularuirouter.js:7)
at Object.t.go (angularuirouter.js:7)
at angularuirouter.js:7
at angularjs.js:146
at e (angularjs.js:43)
at angularjs.js:45
ui路由器一旦转换就不会跟踪先前的状态,但是当状态更改时,事件$ stateChangeSuccess会在$ rootScope上广播。
您应该能够捕获该事件的先前状态(“ from是您要离开的状态:]
app.run(['$rootScope',function($rootScope)
{
$rootScope.previousState;
$rootScope.currentState;
$rootScope.$on('$stateChangeSuccess', function(ev, to, toParams, from, fromParams) {
$rootScope.previousState = from.name;
$rootScope.currentState = to.name;
console.log('Previous state:'+$rootScope.previousState)
console.log('Current state:'+$rootScope.currentState)
});
}]);