我目前正在重构我的代码,使其与基于组件的体系结构兼容(以便进一步迁移到Angular)。
我真的需要'ngInject'
字符串和结尾的$inject
吗?
在我当前的代码中,我正在使用ng-annotate
和gulp,似乎它处理了所有依赖项注入的问题。
class SecuritySettingsCtrl {
constructor($scope) {
'ngInject';
_self = this;
_self.$onInit = function () {
//....
}
};
}
SecuritySettingsCtrl.$inject = ['$scope'];
export default SecuritySettingsCtrl
答案 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文件中通过测试或在实际应用中手动进行检查。