2016-07-28 12 views
0

私のrun()で現在の状態名を取得したいと思います。私は$ state.current.nameを使用しています。その空の文字列を返します。angularjsを使用して現在の状態名を取得する方法

$rootScope.$on('$stateChangeStart', function (event, next) {    
      var json = (function() { 
       event.preventDefault(); 
       $.ajax({ 
        'async': false, 
        'global': false, 
        'url':'users/testLogin', 
        //'data': 'action=showOrders', 
        'dataType': "json", 
        'success': function (data) { 
         if(data.success){ 
          $rootScope.authenticated = true; 
          $rootScope.id = data.data.id; 
          $rootScope.unique_id = data.data.unique_id; 
          $rootScope.print_house_id = data.data.print_house_id; 
          $rootScope.name = data.data.name; 
          $rootScope.email = data.data.email; 
          $rootScope.type = data.data.type; 
         } else { 
          console.log($state.current.name); 

         }       
        } 
       }); 
      })(); 
     }); 

誰でも私のエラーが見つかりましたか?

+0

の可能性のある重複:http://stackoverflow.com/questions/23590799/ui-router-get-state-name-from-object-function – varit05

+1

まず、あなたが使用する必要がありますjquery '$ .ajax'ではなく角張った' $ http'です。第2に、このメソッドに '$ state'を注入したようには見えません。また、このように '$ rootScope'を使うことはアンチパターンです。 – Claies

答えて

1

使用この、

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { 

     $state.current = toState; // if you need the target Url 
      $state.current = fromState;// If you need the current URL 
     var json = (function() { 
      event.preventDefault(); 
      $.ajax({ 
       'async': false, 
       'global': false, 
       'url':'users/testLogin', 
       //'data': 'action=showOrders', 
       'dataType': "json", 
       'success': function (data) { 
        if(data.success){ 
         $rootScope.authenticated = true; 
         $rootScope.id = data.data.id; 
         $rootScope.unique_id = data.data.unique_id; 
         $rootScope.print_house_id = data.data.print_house_id; 
         $rootScope.name = data.data.name; 
         $rootScope.email = data.data.email; 
         $rootScope.type = data.data.type; 
        } else { 
         console.log($state.current.name);//It should show value now 

        }       
       } 
      }); 
     })(); 
    }) 
+0

'$ state'はui-routerによって提供されるサービスです。手動で値を設定する必要はありません..... – Claies

+0

@Claies私は自分の答えを更新しました。あなたは正しいです。しかし、彼が必要とする州の名前がはっきりしないので、私は手動で設定しました。 – Ved

+0

手動で値を設定している場合は、別の変数名を使用して、その名前のサービスが正当に提供している値とこの値を混同しないようにする必要があります。 – Claies

関連する問題