使用TypeScript创建AngularJs控制器

时间:2015-09-02 12:24:00

标签: angularjs typescript

我有带Angular控制器的JS代码,它的开头如下:

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

我想用TypeScript重写它。这是我的代码:

class Some {

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

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

不起作用:

  

找不到名称$ scope,bookmarkService,crawlerService

我该如何解决?

1 个答案:

答案 0 :(得分: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);

以后的角度IoC将正确地找出应该作为构造函数params注入的内容

如果我们使用一些模块/命名空间

module My.Namespace
{
    class Some {

我们会使用:

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