ホームページ >ウェブフロントエンド >jsチュートリアル >私の AngularJS コントローラーが関数ではないのはなぜですか?それを修正するにはどうすればよいですか?
AngularJS のコントローラーが関数ではないエラー: 問題を解決するための包括的なガイド
AngularJS を使用しているときに、次のようなエラーが発生する場合があります。コントローラーは関数ではありません。このエラーは通常、コントローラーをグローバルに定義しようとしたときに発生しますが、これは AngularJS 1.3 では許可されなくなりました。この問題を解決するには、module.controller 構文を使用してコントローラーを明示的に登録する必要があります。
解決策 1: module.controller 構文を使用してコントローラーを登録する
コントローラーを定義するにはmodule.controller 構文を使用する場合は、次のとおりです手順:
angular.module('app', []) .controller('ContactController', ['$scope', function ContactController($scope) { // Controller logic here }]);
解決策 2: $inject アノテーションと AngularJS 1.3.5 を使用する
AngularJS バージョン 1.3.5 以降では、$inject アノテーションを使用できます。アノテーションを使用してコントローラーの依存関係を定義します。このアノテーションは、コントローラー関数の先頭に配置する必要があります。
function ContactController($scope) { $scope.contacts = ["[email protected]", "[email protected]"]; $scope.add = function() { $scope.contacts.push($scope.newcontact); $scope.newcontact = ""; }; } ContactController.$inject = ['$scope']; angular.module('app', []).controller('ContactController', ContactController);
グローバル コントローラーを再有効化する (オプション)
AngularJS 1.3 では厳密なスコープが強制され、これにより以下のことが禁止されます。グローバルコントローラー宣言。ただし、モジュール設定で allowedGlobals オプションを使用すると、グローバル コントローラーを再度有効にすることができます。
angular.module('app') .config(['$controllerProvider', function($controllerProvider) { $controllerProvider.allowGlobals(); }]);
追加の考慮事項:
これらの解決策に従うことで、「コントローラーは関数ではありません」問題を正常に解決できます。 AngularJS の「エラー」を解決し、コントローラーを効果的に定義します。
以上が私の AngularJS コントローラーが関数ではないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。