我使用Typescript 1.4和angularjs 1.3.6。
使用带有webessentials的VS 2015 RC,没有模块系统(没有 - 模块标志)
我有一个工作代码,如下所示:
demoModule.ts
module Demo.Test {
'use strict';
(() => {
var app = angular.module('Demo.Test', []);
// Routes.
app.config([
'$stateProvider', $stateProvider => {
$stateProvider
.state('demo', {
url: '/demo',
templateUrl: '/views/test/demo.html',
controller: 'demoController as vm'
});
}
]);
})();
demoController.ts
module Demo.Test {
'use strict';
export class DemoController {
constructor(/* ... */) { /* ... */}
}
angular.module('Demo.Test').controller('demoController', Demo.Test.DemoController);
}
但是当我移动这一行时:
angular.module('Demo.Test').controller('demoController', Demo.Test.DemoController);
到demoModule.ts文件(见下文)它将编译,但在运行时出现JS错误:
错误:[ng:areq] Argument' demoController'不是一个功能,未定义
我知道如何让它发挥作用?我的意思是这样的:
module Demo.Test {
'use strict';
(() => {
var app = angular.module('Demo.Test', []);
angular.module('Demo.Test').controller('demoController', Demo.Test.DemoController);
// Routes.
app.config([
'$stateProvider', $stateProvider => {
$stateProvider
.state('demo', {
url: '/demo',
templateUrl: '/views/test/demo.html',
controller: 'demoController as vm'
});
}
]);
})();
答案 0 :(得分:2)
如果您使用的脚本引用不是正确的顺序,那么您将得到运行时错误 as:错误:[ng:areq] Argument' demoController'不是一个功能,未定义
在html文件中的demoModule.ts之前添加demoController.ts。
<script src="demoController.js"></script>
<script src="demoModule.js"></script>
答案 1 :(得分:1)
它与文件的订购有关。在TypeScript中使用--out
引起的一个众所周知的错误:https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md#runtime-errors