2015-11-02 2 views
0

Мне нужна одна помощь. Мне нужно установить только предыдущее состояние внутри тега привязки при навигации по меню. Я объясняю свой код ниже.Как установить предыдущее состояние внутри тега привязки с помощью angular.js

<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> 

В этом коде мне нужно, когда пользователь нажмет на Resource Management меню этого меню будет активное и другое меню не активно (Here i am using active class for highlight the menu) и будет показывать только предыдущее состояние page.As она имеет некоторые подменит эти Субменю будет отображаться в выпадающем списке. В этом случае все идет правильно, но его бросание ниже ошибки и свойство 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 

Пожалуйста, помогите мне решить эту проблему.

ответ

0

ui-router не отслеживает предыдущее состояние после его перехода, но событие $ stateChangeSuccess транслируется на $ rootScope при изменении состояния.

Вы должны быть в состоянии поймать предварительное состояние от этого события («от» это состояние вы уезжаете):

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) 
     }); 
}]); 
+0

где я добавлю это. – satya

+0

Вы можете добавить его везде, где хотите, потому что предыдущие и текущие свойства состояния добавлены в ** $ rootScope ** ... Кстати, AngularJS и UI.Router могут управлять историей браузера, чтобы вы могли попробовать с простой * history.back *. – Hitmands

+0

Вы указали свои состояния в app.config чуть выше, вставьте вышеуказанный код –

Смежные вопросы