angularjs:模块定义的设计问题

时间:2013-05-08 12:28:11

标签: angularjs

我对AngularJS非常恼火!我使用以下语法设计了我的模块:

angular.module('myModule.controllers').controller('someCtrl',
['$scope', '$route', 'someService', function ($scope, $route, someService) {
      someService.getData.success(function(){});
}

以前一切都工作得很好......直到昨天我意识到我需要在路由中使用resolve,以便我可以延迟渲染我的视图,直到从我的datacontext服务返回所有数据并且所有承诺都得到解决

但是,这意味着我必须将上面的语法更改为:

function someCtrl($scope, $route, someService) {

}
someCtrl.resolve = {
  //   get data from here
 }

 someCtrl.$inject =  ['$scope', '$route', 'someService'];

所以在我的路线定义中我可以这样做:

controller: someCtrl,
resolve: someCtrl.resolve

我不喜欢上面的语法。我更喜欢我以前做的事情(缩小友好的语法)。

现在的问题是,使用新语法,如何将someCtrl分配给之前定义的角度模块“myModule.controllers”?

1 个答案:

答案 0 :(得分:1)

我知道一种方法来处理请参阅下面我在项目中实现的代码 注意:如果使用模块注册的控制器,则必须使用带控制器名称的文字表示法

- >路线

 $routeProvider.when('/Rally/:date/:id/:month', {
        templateUrl: '/partials/RallyDetail.html', controller: 'rallydetailcontroller', resolve: {
            rallydata: ['$http', '$route', function ($http, $route) {
                return $http({
                    method: 'GET',
                    url: 'https://api.mongolab.com/api/1/databases/benisoftlabs/collections/RallyDetail?q={"Candidate":"' + $route.current.params.id + '","Month":"' + $route.current.params.month + '","Date":"' + $route.current.params.date + '"}&apiKey=50920bb9e4b010d72c561d8a'
                });
            }],

        }
    });

- >控制器

App.controller('rallydetailcontroller',['$scope', 'rallydata', function ($scope, rallydata) {
    $scope.rallyData = rallydata.data;
}]);