我有带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
我该如何解决?
答案 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);