2015-09-02 380 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和其他链接与其他细节和示例 –