2016-08-18 9 views
1

コントローラが起動する前にユーザがlocalStorageに存在するかどうかを確認するために解決を使用したいが、動作させることができない。 例:私はtranspileするのWebPACK、グッとバベルを使用しています :es6クラス構文でresolveを使用する

//loginDirective.js 

import {LoginController as controller} from './login.controller'; 
import template from './login.html'; 

export const loginDirective =() =>{ 
return{ 
    controller, 
    template, 
    scope:{}, 
    controllerAs:'vm', 
    replace: true, 
    restrict: 'E' 
    } 
} 

//login.js 
import {loginDirective} from './login.directive'; 
import angular from 'angular'; 
import uiRouter from 'angular-ui-router'; 

export const login = angular.module('admin', [uiRouter]) 
.config(($stateProvider) => { 
    $stateProvider.state('login', { 
     url  : '/login', 
     template: '<login></login>', 
     resolve : { 
      loggedUser: function() { 
       if(localStorage.getItem('user')){ 
        return true; 
       } 

       return false; 
      } 
     } 
    }) 
}) 
.directive('login', loginDirective); 

//LoginController 

'use strict'; 

class LoginController { 

constructor($state, AuthenticationService, loggedUser) { 
    this.$state    = $state; 
    this.AuthenticationService = AuthenticationService; 
    this.email     = ''; 
    this.password    = ''; 
    this.loggedIn    = loggedUser; 
} 

login =() => { 
    this.AuthenticationService.Login(this.email, this.password).then((result)     => { 
     this.loggedIn = result; 
     if (this.loggedIn === true) { 
      this.$state.go('home', {}, {reload: true}); 
     } 
    }); 
    } 

logout =() => { 
    this.AuthenticationService.Logout(); 
    this.loggedIn = false; 
    this.$state.go('login', {location: true}); 
} 

} 

LoginController.$inject = ['$state', 'AuthenticationService', 'loggedUser']; 

export {LoginController} 

これはUnknown provider: loggedUserProvider <- loggedUser

注意をスローします。 WebPackでは、ステージ1が有効になっています。 これで解決方法を見ることができます。$ stateしかし、それは私がそれにアクセスする方法ではありません。

+0

「ログイン」状態定義にはコントローラがありません。したがって、ui-routerはログインコントローラをインスタンス化しません。したがって、コンストラクタには何も渡せません。 –

+0

ログインディレクティブはそのページの処理を担当し、コントローラが定義されています。問題の解決方法を除いてすべてが動作します – vodich

+0

はい、それは私の主張です。コントローラをインスタンス化するルータではないため、解決済みのログインユーザをコントローラに渡すことはできません。コントローラは状態のコントローラではありません。これは、状態のテンプレートで使用される指示のコントローラーです。だからうまくいかない。どのようにしなければならないかを理解するには、https://ui-router.github.io/guide/ng1/route-to-componentを読んでください:コントローラーとテンプレートを使用するか、コンポーネントを使用してください。 –

答えて

1

「ログイン」状態定義にコントローラがありません。したがって、ui-routerはログインコントローラをインスタンス化しません。したがって、コンストラクタには何も渡せません。

コントローラは状態のコントローラではありません。これは、状態のテンプレートで使用される指示のコントローラーです。だからうまくいかない。

https://ui-router.github.io/guide/ng1/route-to-componentを読むと、コントローラーとテンプレートを使用するか、コンポーネントを使用する必要があります。

+0

コンポーネントのアプローチは実際に私にとってはうまくいかなかったし、ui-routerのバージョンかもしれないので、私はコントローラとテンプレートだけを使って切り替えた。 – vodich

+0

注:結局のところルータのバージョン – vodich

関連する問題