AngularJS:避免使用“angular”全局对象
AngularJS: avoid using the 'angular' global object
我想知道避免在控制器、服务等中使用"角度"全局对象是否是一种好习惯。
举个例子,假设我们要调用函数:
angular.isDefined(myVar)
我们应该如何引用"角度"对象?
选项:
1 只需使用它,可能会从 IDE 收到一些"变量未定义"警告
2 以AMD的方式引用"角度"依赖关系
define([
'angular'
], function (angular) {
'use strict';
return ['$log', '$filter', function ($log, $filter) {
return {
// ... code ...
angular.isDefined(myVar);
};
}];
}
);
3 参考"棱角"的角度方式
module.factory('ang', function() { return angular; });
define([], function () {
'use strict';
return ['ang', '$log', '$filter', function (ang, $log, $filter) {
return {
// ... code ...
ang.isDefined(myVar);
};
}];
}
);
我会选择选项 3,只是想知道什么是最好的方法。
你首先使用Angular的事实意味着你不必担心它是未定义的。从那里开始,它实际上只是一个静态分析问题......您希望明确表示您引用的是全局变量。
您提出的两种解决方案都很好。还有其他几个选项:
- 显式注入
$window
和引用$window.angular
- 配置静态分析工具,使其知道
angular
是在其他地方定义的。您可以使用.jshintrc
中的globals
属性执行此操作。
我可能会将$window
和您的选项 3 结合起来,以防止在分析该文件时出现警告:
module.factory('ang', function($window) { return $window.angular; });
相关文章:
- 如何使用angular _ design保持全局当前用户直到注销
- 我可以在不注入控制器的情况下在 Angular 中使用全局常量吗?
- angular/javascript无法识别函数内部的全局变量
- 如何使用不同视图的JSON对象更新angular js中的全局JSON字段
- Angular promise服务作为全局数据服务
- 全局设置angular.js url根
- 当作为 CommonJS 模块加载时,Angular 是否全局将自己分配给“window.angular”
- AngularJS:避免使用“angular”全局对象
- Angular 2 注入了全局依赖关系
- 在 Angular 2 应用程序中全局使用 jQuery
- 如何访问Angular应用程序's$templateCache来自全局范围
- 全局函数中的Angular.js依赖项注入
- Angular 2路由器全局状态更改事件
- angular模块名称全局声明和重用
- Angular.js:存储http.get请求中的变量,以便在不同的$scope函数中全局使用
- 来自全局函数的Angular问题,自测试版1.3.0b15以来中断.需要帮助
- "控制器污染全局命名空间“;它在Angular中意味着什么
- 可以't访问angular JS中的全局变量
- 在typescript中扩展angular全局对象
- Angular全局变量