Angular + ES6模块:控制器功能未定义

时间:2015-07-29 05:37:15

标签: angularjs jspm systemjs

我在第一次使用jspm时遇到了困难,需要快速指向正确的方向。 (我以前加载过ES6类,但只作为连接文件的一部分。)

这是我的自举代码的摘录

import angular from 'angular';
import 'angular-ui-router';
import AppController from './app.ctrl';

angular.module("af2015App", ["ui.router"])
.controller("appController", AppController)

这是app.ctrl.js

'use strict';

class AppController {
    constructor() {
        console.log("AppController");
    }
}

export { AppController }

我的html中有这个:

<div ng-app="af2015App" ng-controller="appController as app" class="app">

这就是我得到的错误。

Error: [ng:areq] Argument 'appController' is not a function, got undefined
http://errors.angularjs.org/1.4.3/ng/areq?p0=appController&p1=not%20a%20function%2C%20got%20undefined
    at REGEX_STRING_REGEXP (VM235 angular.js:71)
    at assertArg (VM235 angular.js:1773)
    at assertArgFn (VM235 angular.js:1783)
    at VM235 angular.js:8978
    at setupControllers (VM235 angular.js:8040)
    at nodeLinkFn (VM235 angular.js:8080)
    at compositeLinkFn (VM235 angular.js:7544)
    at publicLinkFn (VM235 angular.js:7419)
    at VM235 angular.js:1638
    at Scope.parent.$get.Scope.$eval (VM235 angular.js:15849)

看看大写,我可以看到这是来自html的解析,但我看不出我做错了什么。我也为ui-router加载的另一个控制器收到此错误。

1 个答案:

答案 0 :(得分:2)

您需要在控制器文件中使用默认导出:

export default AppController;

或者,您可以按名称导入(不更改控制器):

import { AppController } from './app.ctrl';