1

我对 AngularJS 很生气!我使用以下语法设计了我的模块:

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

过去一切正常......直到昨天,当我意识到我需要在我的路线中使用解析,以便我可以延迟我的视图的呈现,直到所有数据都从我的 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”?

4

1 回答 1

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;
}]);
于 2013-05-08T13:22:07.137 回答