최소화하기 쉬운 의존성 주입과 함께 angular.controller 메서드를 사용 하여이 작업을 수행하는 방법을 묻는 사람들이 있습니다. 방금이 일을 마치고 돌아와서 도와 줘야한다고 느꼈습니다. 내 해결책은 다음과 같습니다 (원래 질문과 Misko의 대답에서 채택 됨).
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';
}]);
이 코드는 질문 / 가장 인기있는 답변에서 파생되었으므로 테스트되지 않았지만 최소화하기 쉬운 각도 코드를 만드는 방법을 이미 이해했다면 올바른 방향으로 보내야합니다. 내 코드에 필요하지 않은 부분은 '전화'의 해결 기능에 "전화"를 주입하거나 '지연'객체를 전혀 사용하지 않았습니다.
또한이 유튜브 비디오 ( http://www.youtube.com/watch?v=P6KITGRQujQ&list=UUKW92i7iQFuNILqQOUOCrFw&index=4&feature=plcp)를 추천합니다 )를
관심이 있으시면 내 코드 (커피 스크립트로 작성)를 붙여서 어떻게 작동하는지 확인할 수 있습니다.
참고로, 미리 여러 모델에서 CRUD를 수행하는 데 도움이되는 일반 컨트롤러를 사용합니다.
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 ....
]