2013-05-08 48 views
1

我非常惱火AngularJS!我使用下面的語法設計我的模塊: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 

我不喜歡上面的語法。我非常喜歡我曾經做過的事(最小化的語法)。

現在的問題是,使用新的語法,如何將一些Ctrl分配給我之前定義的角度模塊'myModule.controllers'?

回答

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; 
}]); 
+0

OK,這是一個開始。現在的問題是,路由定義中有代碼!我的路線是在app.js文件中定義的,我將有許多路線,可能有很多解析語句。如果我不得不打電話給那裏的服務,那將是一團糟!任何其他想法? :) – Sam 2013-05-08 18:04:21