Bazı insanlar bunu minimal dostu bağımlılık enjeksiyonu ile angular.controller yöntemini kullanarak nasıl yapılacağını sordum. Bu işe yeni başladığımdan beri geri dönüp yardım etmek zorunda kaldım. İşte benim çözümüm (orijinal sorudan ve Misko'nun cevabından benimsenmiştir):
angular.module('phonecat', ['phonecatFilters', 'phonecatServices', 'phonecatDirectives']).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/phones', {
templateUrl: 'partials/phone-list.html',
controller: PhoneListCtrl,
resolve: {
phones: ["Phone", "$q", function(Phone, $q) {
var deferred = $q.defer();
Phone.query(function(successData) {
deferred.resolve(successData);
}, function(errorData) {
deferred.reject(); // you could optionally pass error data here
});
return deferred.promise;
]
},
delay: ["$q","$defer", function($q, $defer) {
var delay = $q.defer();
$defer(delay.resolve, 1000);
return delay.promise;
}
]
},
}).
when('/phones/:phoneId', {
templateUrl: 'partials/phone-detail.html',
controller: PhoneDetailCtrl,
resolve: PhoneDetailCtrl.resolve}).
otherwise({redirectTo: '/phones'});
}]);
angular.controller("PhoneListCtrl", [ "$scope", "phones", ($scope, phones) {
$scope.phones = phones;
$scope.orderProp = 'age';
}]);
Bu kod sorudan / en popüler cevaptan türetildiğinden, test edilmemiştir, ancak minyatür dostu açısal kodun nasıl yapıldığını zaten biliyorsanız, doğru yönde göndermeniz gerekir. Kendi kodumun gerektirmediği bir parça, 'telefonlar' için çözümleme işlevine bir "Telefon" enjeksiyonu oldu, ne de herhangi bir 'gecikme' nesnesi kullanmadım.
Bu youtube videosunu da http://www.youtube.com/watch?v=P6KITGRQujQ&list=UUKW92i7iQFuNILqQOUOCrFw&index=4&feature=plcp , bana biraz yardımcı oldu
İlginizi çekerse, kendi kodumu da yapıştırmaya karar verdim (coffeescript'te yazıldı), böylece nasıl çalıştığımı görebilirsiniz.
FYI, önceden çeşitli modellerde CRUD yapmama yardımcı olan genel bir kontrolör kullanıyorum:
appModule.config ['$routeProvider', ($routeProvider) ->
genericControllers = ["boards","teachers","classrooms","students"]
for controllerName in genericControllers
$routeProvider
.when "/#{controllerName}/",
action: 'confirmLogin'
controller: 'GenericController'
controllerName: controllerName
templateUrl: "/static/templates/#{controllerName}.html"
resolve:
items : ["$q", "$route", "$http", ($q, $route, $http) ->
deferred = $q.defer()
controllerName = $route.current.controllerName
$http(
method: "GET"
url: "/api/#{controllerName}/"
)
.success (response) ->
deferred.resolve(response.payload)
.error (response) ->
deferred.reject(response.message)
return deferred.promise
]
$routeProvider
.otherwise
redirectTo: '/'
action: 'checkStatus'
]
appModule.controller "GenericController", ["$scope", "$route", "$http", "$cookies", "items", ($scope, $route, $http, $cookies, items) ->
$scope.items = items
#etc ....
]