0

Angular JS にコントローラーがあります。

このコントローラーには $scope.users プロパティがあります。これはユーザーの配列です。

このコントローラーは、/users と /users/:id の 2 つのビューで使用されます。

$scope.users モデルは、ユーザー ビューに来るたびに初期化されることがわかりました。

私の質問は、 $scope.users を /users/:id ビューではなく /users ビューにのみ適用する方法です。

$location.path メソッドでこれを実行しましたが、正しい方法かどうかはわかりません。

PS:ユーザーを取得するためのファクトリがあるので、それがシングルトンであることはわかっています...

答えてくれてありがとう。

4

2 に答える 2

1

$element オブジェクトを挿入し、dom を検索して正しいページにいることを確認できます。

$location オブジェクトを挿入して、URL が正しいページにあるかどうかを確認できます。

/user のテンプレートに何かを追加して、配列を初期化すると、 user/:id に同じ呼び出しが含まれないようにすることができます。

コードでは、次のようなことができます。

angular.module('myapp').constant('users',[]);
angular.module('myapp').controller('UserCtrl', function(users){
    if(!users.length){
        //push some things into the bloody array
    }
});

これがすべての方法の中で最善であると言っているわけではありません。説明するのが一番難しかったです。グローバル変数を作成するのと似ていますが、グローバル変数を作成していません。angularモジュールで定数変数を作成しています。

もっと方法があると確信しています。これらは私が考えたいくつかの方法です。

于 2013-06-06T20:47:06.320 に答える
0

私は答えを得た!

実際、AngularJS は MVC フレームワークではなく、MVVM フレームワークです。この場合、コントローラーはモデル (MVVM パターン)、$scope はビューモデル、HTML はビューです (ng-controller は純粋な .NET MVVM の dataContext です)。

この場合、コントローラーにはビューのみが必要です!!

「一般的に、コントローラは多くのことをしようとするべきではありません。単一のビューに必要なビジネス ロジックのみを含める必要があります。」

http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller

ありがとうございます。それが役に立てば幸い。

于 2013-06-11T08:33:06.760 に答える