我使用Typescript 1.4和angularjs 1.3.6。在內部模塊中定義/使用angularjs控制器
使用VS 2015年RC與webessentials,沒有模塊系統(無--module標誌)
我有一個工作這樣的代碼:
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錯誤:
Error: [ng:areq] Argument 'demoController' is not a function, got undefined
任何想法,我怎樣才能使它工作?我的意思是這樣的:
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'
});
}
]);
})();
這是所有關於文件的順序,我猜。 –