2015-05-17 61 views
1

我使用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' 
      }); 
     } 
    ]); 
})(); 
+0

這是所有關於文件的順序,我猜。 –

回答

2

如果您使用腳本引用的順序不正確,那麼您將得到運行時錯誤。
as:Error:[ng:areq]參數'demoController'不是函數,但未定義

在demoModule.ts之前在您的html文件中添加demoController.ts。

<script src="demoController.js"></script> 
<script src="demoModule.js"></script> 
+0

謝謝,它的確在訂購,我知道它可能是,但似乎我正在做兩個變化(移動線和重新排序)。 –

相關問題