使用es与es6类语法的解析

时间:2016-08-18 10:44:29

标签: angularjs ecmascript-6

我想在控制器启动之前使用resolve来检查localStorage上是否存在用户,但是无法使其工作。 例如:

//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,gulp和babel进行转换。 WebPack启用了babel阶段1。 我可以在这个。$ state中看到解决方法,但这不是我想要访问它的方式。

1 个答案:

答案 0 :(得分:1)

您的登录信息&#39;州定义没有控制器。所以ui-router没有实例化登录控制器。所以它不能将任何东西传递给它的构造函数。

控制器不是州的控制者。它是恰好在状态模板中使用的指令的控制器。这样就行不通了。

阅读https://ui-router.github.io/guide/ng1/route-to-component以了解您必须如何操作:使用控制器和模板,或使用组件。