2

Web サービスをロードする必要があります。テーブルの表示、並べ替え、およびフィルタリングの角度のある方法が気に入り、作成したものはうまく機能しました。現在、これを拡張しようとしています。選択したリンクに基づいて、同じ Web サービスからの異なるデータを同じ方法で表示したいと考えています。コードを複製しないようにしているので、コントローラーを再利用しようとしていますが、混乱しています。これは私がしたいことを意味します

  • 別の部分/テンプレート URL を表示します。
  • 異なる URL パラメータをロードします。
  • JSON が返された後、いくつかのものをマップします。

私がこれまで考えてきた構成の変更に取り組む最善の方法は何でしょうか? 最初に変数 ( ) にルーティングし、when('/change-requests/:businessUnit'それを使用してさまざまな値を読み込みました。しかし、テンプレートの URL を変更するにはどうすればよいですか? 一方、ルートを追加して (コントローラーを再利用して) 別の URL テンプレートをロードするだけの場合、ajax 呼び出しで別の URL をロードするにはどうすればよいでしょうか? 私はAngularにあまり詳しくないので、間違ったツリーを吠えているのかもしれません...

これが私の元のコードの関連部分です。まだまだありますが、どれも変える必要はありません。選択したリンクに応じて、変更したい部分が見つかるインライン コメントをいくつか追加しました。

HTML:

<div ng-view></div>

ルーター:

  $routeProvider.when('/change-requests/business-solutions', {
                    //this template will be different
                    templateUrl: 'js/modules/changeRequests/partials/business-solutions.html',
                    controller: ChangeRequestCtrl
                })

(の一部) コントローラ:

        function ChangeRequestCtrl($scope, $location) {

                $scope.loaded = false;
                $.ajax({
                    //this url will be different
                    url: url,
                    success: function(json) {
                        $scope.$apply(function() {
                            $scope.changes = json.map(function(row) {
                                //this array map will be different
                                return row;
                            });
                            $scope.loaded = true;
                        });
                    },
                    error: function() {
                        $scope.error = true;
                    }
                });
        }

意味がわからない場合は、明確にしようとします。

4

1 に答える 1

5

再利用コントローラー名を使用する場合は、ルートで解決プロパティを使用し、コントローラーでその解決プロパティを使用する必要があります

 $routeProvider.when('/change-requests/business-solutions', {
                    //this template will be different
                    templateUrl: 'js/modules/changeRequests/partials/business-solutions.html',
                    controller: ChangeRequestCtrl, resolve: {
            resolvedprop: ['$route', '$q', function ($route, $q) {
               var apiObject = {url: 'abc.com' };                      
               return apiObject     
                     }],
        }
                })


     function ChangeRequestCtrl($scope, $location,resolvedprop) {
       url = resolvedprop.url ;
       }
于 2013-07-18T07:19:05.020 に答える