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サービスに依存します。