2016-06-24 1 views
3

オブジェクト実行Methodeの私のコードはカスタムデータは、私がUI-ルータを使用して、私は私の状態オブジェクトにデータを添付しますが、いくつかのケースでは、実行Me​​thodeの例外「未定義requireLogin」</p>以下 <p>をretrun、いくつかのルートへのアクセスを防止しようと

angular.module('app', [ 
'app.user' ]) 
.config(function ($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/login'); 
    $stateProvider 
     .state('app', { 
      abstract: true, 
      templateUrl: 'app/main/views/app.html', 
      data: { 
       requireLogin: true 
      } 
     }) 
     // HOME 
     .state('app.home', { 
      title: 'Home', 
      url: '/home', 
      templateUrl: 'app/main/views/home.html', 
      controllers: ['mainController.js'], 
     }) 

}) 

.run(['$rootScope', '$location', 
    function ($rootScope, $location) { 
     $rootScope.location = $location; 
     $rootScope.$on('$stateChangeSuccess', function (event, current) { 



      var requireLogin = current.data.requireLogin; 

      if (requireLogin) { 
      event.preventDefault(); 
      $rootScope.location.path('/login'); 
      } 

     }); 

    }]); 

であり、これは、いくつかのケースでは

angular.module('app.user', []) 

.config(['$stateProvider', function ($stateProvider) { 

    var moduleUrl = 'app/modules/user/'; 
    var moduleTemplate = 'app/main/views/app.html'; 
    var moduleName = 'app.user'; 

    $stateProvider 
     .state('user', { 
      abstract: true, 
      data: { 
       requireLogin: true, 
      }, 
      url: '/user', 
      templateUrl: moduleTemplate, 
      resolve: scriptUtils.getResolved(moduleName, [moduleUrl + 'services/userService.js']) 
     }) 

     .state('user.accueil', { 
      title: 'user', 
      url: '/accueil', 
      templateUrl: moduleUrl + 'views/accueil.html', 
      controller: 'userController', 
      resolve: scriptUtils.getResolved(moduleName, 
       [ 
        moduleUrl + 'controllers/userController.js' 
       ]) 
     }) 
     .state('user.add', { 
      title: 'user', 
      url: '/add', 
      templateUrl: moduleUrl + 'views/add.html', 
      controller: 'userController', 
      resolve: scriptUtils.getResolved(moduleName, 
       [ 
        moduleUrl + 'controllers/userController.js' 
       ]) 
     }); 
}]); 

答えて

0

私のユーザモジュールでは、「例外をretrun未定義 requireLogin」

これはあなたがrequireLoginが含まれていなかったいくつかのルートを持っている場合に発生する可能性があります。これを防ぐには、dataプロパティにrequireLoginが含まれているかどうかを最初に確認してください。

var requireLogin = angular.isDefined(current.data) && current.data.requireLogin; 
+0

すべてのルートにrequireLoginが含まれていましたが、すべての場合に動作しませんでした – maha

0

すべての州でrequireLoginは必要ありません。

var requireLogin = current.data? current.data.requireLogin:false;

+0

私はすべてのルートに自動的に含まれるように親に入れました – maha

関連する問題

 関連する問題