我想 JSHint 在这里试图告诉你的是避免使用全局变量(这显然是一个非常好的做法!)。
AngularJS 对解决相同问题(即避免使用全局变量)的看法略有不同,并允许您在模块中定义控制器(使用全局angular
命名空间)。您可以使用如下模块重写您的示例:
angular.module('myApp',[]).controller('webAddressController', function($scope) {
// Do things
});
这是在实践中说明这一点的 jsFiddle:http: //jsfiddle.net/t3vBE/1/
使用这种方法,您不会使用控制器构造函数污染全局命名空间。
angular
如果要使用严格模式,则需要更改 JSHint 配置以允许全局变量。或者,您也可以将整个代码(再次使用模块)包装到一个立即执行的函数中:
(function () {
"use strict";
angular.module('myApp',[]).controller('webAddressController', function($scope) {
$scope.name = 'World';
// Do things
});
}());
这是 jsFiddle:http: //jsfiddle.net/t3vBE/4/
对我来说,这只有在你想定义纯 JavaScript、“帮助”函数时才有意义,否则我会依赖 AngularJS 服务。