【问题标题】:Create AngularJs controller using TypeScript使用 TypeScript 创建 AngularJs 控制器
【发布时间】:2015-11-27 22:57:50
【问题描述】:

我有 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

我该如何解决?

【问题讨论】:

    标签: angularjs typescript


    【解决方案1】:

    最好的方法(嗯,准备好缩小的解决方案)是:

    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);
    

    以后 Angular IoC 将正确找出应该作为构造函数参数注入的内容

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

    module My.Namespace
    {
        class Some {
    

    我们会使用:

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

    【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多