我对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”?
答案 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;
}]);