我想知道避免使用“棱角分析”是否是一个好习惯。控制器,服务等中的全局对象
为了举例,我们想要调用函数:
angular.isDefined(myVar)
我们如何引用角度'对象
选项:
1只要使用它,可能会得到一些未定义的变量'来自IDE的警告
2参考' angular'依赖AMD的方式
define([
'angular'
], function (angular) {
'use strict';
return ['$log', '$filter', function ($log, $filter) {
return {
// ... code ...
angular.isDefined(myVar);
};
}];
}
);
3参考' angular' Angular方式
module.factory('ang', function() { return angular; });
define([], function () {
'use strict';
return ['ang', '$log', '$filter', function (ang, $log, $filter) {
return {
// ... code ...
ang.isDefined(myVar);
};
}];
}
);
我选择选项3,只是想知道什么是最好的方式。
答案 0 :(得分:0)
您首先使用Angular这一事实意味着您不必担心它未被定义。从那里它实际上只是一个静态分析问题......你想清楚地表明你正在引用一个全局变量。
您提供的两种解决方案都很好。还有其他几种选择:
$window
和参考$window.angular
angular
在其他地方定义。您可以使用globals
中的.jshintrc
媒体资源执行此操作。我可能会选择$window
和您的选项3的组合,以防止在分析该文件时发出警告:
module.factory('ang', function($window) { return $window.angular; });