2015-09-02 587 views
1

創建AngularJs控制器我有角控制器JS代碼開頭是這樣的:使用打字稿

angular.module('myApp.controllers', []) 
    .controller('BookmarksController', function($scope, bookmarkService, crawlerService) { 

我想用打字稿重寫一遍。這裏是我的代碼:

class Some { 

    constructor($scope, bookmarkService, crawlerService) {} 
} 

angular 
    .module('myApp.controllers', []) 
    .controller('BookmarksController', Some($scope, bookmarkService, crawlerService)); 

它不工作:

找不到名稱$範圍,bookmarkService,crawlerService

我怎樣才能解決呢?

回答

2

最好的辦法(當然,解決方案准備縮小)是:

class Some { 
    // instruction for IoC 
    static $inject = ["$scope", "bookmarkService", "crawlerService"]; 

    constructor($scope, bookmarkService, crawlerService) {} 
} 

angular 
    .module('myApp.controllers', []) 
    .controller('BookmarksController', Some); 

如果我們使用的是static $inject = []陣列IoC的名字,這甚至會縮小後的工作。然後,我們只是註冊控制器類

.controller('BookmarksController', Some); 

後來角國際奧委會將正確找出應注射作爲構造PARAMS

在情況下,我們會使用一些模塊/命名空間

module My.Namespace 
{ 
    class Some { 

我們將使用:

.controller('BookmarksController', My.Namespace.Some); 
+0

甚至有一個問答:[如何使用TypeScript定義我的控制器?](http://stackoverflow.com/q/30482138/1679310)與一些工作plunker和其他鏈接與其他細節和示例 –