2

我需要加载 Web 服务。我喜欢显示、排序和过滤表格的角度方式,而且我构建的效果很好。现在我正在尝试扩展它:根据选择的链接,我想以相同的方式显示不同的数据,但来自同一个 Web 服务。我试图不重复代码,所以我试图重用控制器,现在我很困惑。这意味着我想

  • 显示不同的部分/模板 url。
  • 加载不同的 url 参数。
  • 在 JSON 返回后映射一些东西。

解决我迄今为止认为是更多配置更改的最佳方法是什么?我首先路由到一个变量 ( when('/change-requests/:businessUnit'),然后使用它来加载不同的值。但是,我该如何更改模板网址?另一方面,如果我只是添加一个路由并加载不同的 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

如果您想使用重用控制器名称,那么您应该在路由中使用 resolve 属性并在控制器中使用该 resolve 属性

 $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 回答