1

私たちの会社では、現在、単一ページの Web アプリケーションに取り組んでいます。ユーザーはログインしてプロファイルにデータを入力し、それらを他の加入者と共有できます (これはソーシャル ネットワークのようなアプリケーションです)。今、私はこのスキーマを想像しました:

  • ユーザー データは UserService によって提供され、REST API を使用してプロファイル情報を回復します。
  • プロファイル関連のページは、独自のコントローラー (ProfileController) によって管理されます。

私の質問は: ルート (「view-profile」としましょう) を特定のコントローラー メソッド (ProfileController.viewProfile) に関連付ける最良の方法は何ですか? これはAngularJSの正しいパターンですか?

ありがとう!

4

1 に答える 1

0

さらに調査すると、この記事で説明されているように、必要な結果を達成するための最良の方法は、状態構成で解決を使用することであることがわかりました: https://scotch.io/tutorials/making-skinny-angularjs-controllers

編集:少し説明してみます。私が達成しようとしているのは、コントローラーにアクセスするたびにデータの膨大なサブセットをプリロードすることを避けるために、特定のアプリケーションの状態をコントローラーのメソッドにルーティングすることです。私のui-routerでこの状況にあるとしましょう

.state('view-profile', {
   url: '/view-profile',
   templateUrl: 'components/profile/profile.html',
   controller: 'ProfileController'
})
[...]
.state('edit-profile', {
   url: '/edit-profile',
   templateUrl: 'components/profile/edit-profile.html',
   controller: 'ProfileController'   
})

ProfileController は、編集/表示に関連する必要のない多くのことを実行できる可能性があるため、これらの URL に移動したときに呼び出される特定のコントローラー メソッドを設定したいと考えています。他の MVC フレームワークでは、ルートを特定のコントローラー メソッドに関連付けることができるため、

route: /edit-profile -> resolvesAs: ProfileController.editProfile(args)

残念ながら、少なくとも ui-router を使用しない限り、AngularJS 1.4 でこれを行う方法は実際にはありません。しかし幸いなことresolveに、ui-router 構成で属性を使用して、特定のルートの無用なデータをプリロードすることを避けることができます。

于 2015-12-04T21:57:18.877 に答える