44

私はまだ AngularJS を初めて使用し、最初のアプリケーションのセットアップに取り組んでいます。私は次のことができるようにしたいと思います:

angular.module('App.controllers', [])
  .controller('home', function () {
    $scope.property = true;
  }]);

angular.module('App', ['App.controllers'])
  .config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/', {templateUrl: 'partials/home.html', controller: home});
  }]);

このセットアップを使用すると、次のエラーが生成されます。

Uncaught ReferenceError: home is not defined from App

私の質問は次のとおりです。コントローラーを使用してangular.module.controller()(または$controllerProvider.register()直接) 登録し、登録したコントローラーをアプリの他の場所で使用するにはどうすればよいですか。

私の動機: グローバル コンストラクター関数をコントローラーとして使用したり (angularjs.org のほとんどの例で使用されているように)、複雑な名前空間を使用したりしたくありません。コントローラーを単一の変数名として登録して使用できる場合 (グローバル スコープには入れられません)、それは理想的です。

4

2 に答える 2

75

文字列識別子を使用してみてください。

routeProvider.when('/', {templateUrl: 'partials/home.html', controller: 'home'});

リテラルを使用すると、 という変数が検索されますhomeが、この場合は存在しません。

于 2012-06-26T17:23:18.350 に答える
-1

controller is not defined エラーが発生する場合は、コントローラー名を引用符で囲む必要があります。

または、このようにコントローラーを定義します

function controllerName()
{
   //your code here
}

これを参照してください: Uncaught ReferenceError:Controller is not defined in AngularJS

于 2013-07-24T11:04:54.983 に答える