创建使用打字稿AngularJs控制器

创建使用打字稿AngularJs控制器

本文介绍了创建使用打字稿AngularJs控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有JS code与角控制器,它开始是这样的:

I have JS code with Angular controller which starts like this:

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

我想用打字稿重写一遍。这里是我的code:

I want to rewrite it using TypeScript. Here is my code:

class Some {

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

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

它不工作:

找不到名称$范围,bookmarkService,crawlerService

我怎样才能解决这个问题?

How can I fix it ?

推荐答案

最好的办法的(当然,解决办法准备缩小)的将是:

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

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

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

如果我们使用的 静态$注射= [] 数组的IoC的名字,这将缩小甚至工作后。然后,我们刚刚注册控制器类

Where we are using the static $inject = [] array for IoC names, which will work even after minification. Then we just register the controller class

.controller('BookmarksController', Some);

和后角国际奥委会将正确地找出应注射作为构造PARAMS

and later angular IoC will properly find out what should be injected as constructor params

在情况下,我们会使用一些模块/命名空间

In case we would use some modules/namespaces

module My.Namespace
{
    class Some {

我们可以使用:

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

这篇关于创建使用打字稿AngularJs控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 12:19