Angular + ES6 模块:控制器函数未定义
Angular + ES6 modules: controller function undefined
我在第一次使用 jspm 时遇到困难,需要一个正确方向的 quick 点。 (我之前加载过 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.
加载的另一个控制器,我也收到此错误
您需要在控制器文件中使用默认导出:
export default AppController;
或者,您可以按名称导入(不更改控制器):
import { AppController } from './app.ctrl';
我在第一次使用 jspm 时遇到困难,需要一个正确方向的 quick 点。 (我之前加载过 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.
加载的另一个控制器,我也收到此错误您需要在控制器文件中使用默认导出:
export default AppController;
或者,您可以按名称导入(不更改控制器):
import { AppController } from './app.ctrl';