1

次のようなモジュール パターンを使用してコントローラーを定義したいと思います。

    (function(ng, app) {

    // Controller constructor.
    function Controller($scope) {

        this.scope = $scope;
        this.scope.fmembers = [
             {
                 name: 'Member 1',
                 role: 'Head of Family',
                 age: 55
             },
             {
                 name: 'Member 2',
                 role: 'Brother of Head of Family',
                 age: 51
             }
        ];

        Controller.prototype = {

            getFMembers: function() {
                return this.scope;
            }
        };

        return( this );
    }

    // Define the Controller as the constructor function.
    app.controller('ftreeController', Controller );
})(angular, anmDesktop);

その場合、モジュールからこのコントローラー (ftreeController) を取得するにはどうすればよいですか? たとえば、app.config の routeprovider で freeController を使用したいと思います。

$routeProvider.when('/view2', {
    templateUrl: 'partials/partial2.html', 
    controller: ftreeController'
});

上記の routeprovider で、エラーが発生します (ftreeController が定義されていません...)

ありがとうございました。

4

1 に答える 1

2

コードにいくつかのエラー(引用符の欠落など)がありましたが、投稿を行う際のコピーアンドペーストエラーであると思われます。それらを修正するのは、ロード順序の問題です。

ルートを構成する前にコントローラーを定義する必要があり、両方の前にアプリを定義する必要があります。また、同様に定義されたファイルにルートを配置して、これが大規模にどのように機能するかを示します。

ただし、AMDのようなローディングシステムがないため、コードをこのように定義することを選択した理由はわかりませんが、機能します。

私はそれが機能することを実証するためにプランカーを作成しました。

覚えておくべきいくつかのこと:まず、Angularのコントローラーは単なる機能です。スコープのコピーを作成してコントローラーオブジェクトのメンバープロパティとして追加した理由や、プロトタイプからコントローラー関数を宣言した理由がわかりません。Angularの依存性注入により、関数は実行時に必要なものがすべて揃っているため、通常の昔ながらのjavascript関数を使用できます。ほとんどのAngularプロジェクトでは、コントローラーは次のように定義されています。

app.controller( 'myCtrl', function( $scope ) { 
    //... 
});
于 2013-01-05T06:58:24.790 に答える