我真的需要写'ngInject'吗

时间:2018-08-20 12:06:37

标签: angularjs

我目前正在重构我的代码,使其与基于组件的体系结构兼容(以便进一步迁移到Angular)。 我真的需要'ngInject'字符串和结尾的$inject吗?

在我当前的代码中,我正在使用ng-annotate和gulp,似乎它处理了所有依赖项注入的问题。

   class SecuritySettingsCtrl {
    constructor($scope) {
        'ngInject';
        _self = this;

        _self.$onInit = function () {
            //....
            }

        };
    }

SecuritySettingsCtrl.$inject = ['$scope'];
export default SecuritySettingsCtrl

1 个答案:

答案 0 :(得分:0)

您需要'ngInject'(如果配置正确并且可以正常工作)或。$ inject = ..., 或导出默认的['$ scope',...]

JavaScript简化程序通常对Angular一无所知。所以他们缩小

function ctrl($scope) { $scope.name = 'test'}

类似

function c(a) { a.name = 'test'}

如果您添加ng-anotate或angularjs-annotate或您喜欢的任何插件并且可以使用,它将为您添加ctrl.$inject = ['$scope'],因此您可以:

function c(a) { a.name = 'test'}
c.$inject = ['$scope']

如果您的缩小版应用程序正常工作-您已正确配置ngInject(或其他任何工具)。

P.S。当然,将'ngInject'与手动注入SecuritySettingsCtrl.$inject一起使用毫无意义。 “有效”表示有效:D,您可以在结果缩小的js文件中通过测试或在实际应用中手动进行检查。