2017-06-12 3 views
0

私はAngular Materialとui-routerモジュールがインストールされたAngular 1.6.1 Webアプリケーションを開発しています。バックプレスの角度ui-router TypeError:a.indexOfは関数ではありません

状態から状態へのナビゲートはうまくいきますが、ブラウザの戻るボタンを押すとURLは変更されますが、状態は変わりません(ビューは同じままです)。コンソールログに次のエラーが表示されます。

TypeError: a.indexOf is not a function 
at f (angular.js:438) 
at m (angular.js:438) 
at Object.z.transitionTo (angular.js:438) 
at Array.<anonymous> (angular.js:438) 
at Object.invoke (angular.js:39) 
at g (angular.js:438) 
at angular.js:438 
at b (angular.js:438) 
at n (angular.js:438) 
at m.$broadcast (angular.js:146) 

$stateChangeStartにも達しません。

ブラウザの履歴スタックに何か問題があるようです。

数日前にすべてうまくいきました。それ以来何も変えていませんでした(私のgitログによるとは限りません)。私は、アプリケーションの各モジュールのファイルをルーティングのカップルを含め、この設定後

$stateProvider 
     //Main states 
     .state('main', { 
      abstract: true, 
      controller: 'MainController', 
      template: '<div ui-view flex layout="column"></div>' 
     }) 
     .state('null', { 
      parent: 'main', 
      url: '/', 
      controller: function($state){ 
       $state.go('login', {}, {location: "replace", reload: true}); 
      } 
     }) 
     //main loggedin state loading main loggedin view 
     .state('logged-in', { 
      parent: 'main', 
      abstract: true, 
      templateUrl: COMP_DIR + 'core/logged-in/logged-in.view.html', 
      controller: 'LoggedInController', 
      controllerAs: 'vm' 
     }) 

     .state('no-enterprise', { 
      parent: 'logged-in', 
      abstract: true, 
      template: '<div ui-view flex layout="column"></div>', 
      controller: 'NoEnterpriseController' 
     }) 

マイ$stateProvider設定が異なるファイルに分割され、最初のファイルは同類にこのように見えます。

$stateProvider 
    //main enterprise state 
     .state('enterprise', { 
      parent: 'logged-in', 
      url: '/{slug}', 
      controller: 'EnterpriseController', 
      controllerAs: 'vm', 
      template: '<div ui-view flex layout="column"></div>' 
     }) 

     //states inside enterprise state 
     .state('dashboard', { 
      url: '/', 
      parent: 'enterprise', 
      title: 'Dashboard', 
      templateUrl: COMP_DIR + 'dashboard/dashboard.index.view.html', 
      controller: 'Dashboard.DashboardController', 
      controllerAs: 'vm' 
     }) 

状態変化が要素に簡単なui-srefを追加することによってトリガされていて、それが正常に動作している、しかし、私は戻って戻って行くことができませんよ。その後、私はこのように、最後のルーティングファイルを追加しますボタンをクリックします。

誰もがこのエラーがポップアップする理由を知っていますか?そのため、戻るボタンが正しく機能していませんか?

ありがとうございます!

編集:さらに、アプリケーションをリフレッシュすると(F5キーを押して)、前の手順に進むまで戻るボタンが機能していますが、履歴スタックで前方にナビゲートしようとして同じエラーが発生します。

答えて

0

私はこの問題を解決しました。 $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams) {}機能にエラーがありました。

私はtoState.nameを未定義と比較しようとしました。

ステートが変更される前にエラーが発生したため、これは奇妙でした。したがって、状態を変更しているときにエラーが発生した場合は、$stateChangeSuccessイベントハンドラを確認してください;

関連する問題