Я не совсем уверен, почему вы хотите, чтобы коллекция разрешала загрузку маршрута, а не в контроллере - не могли бы вы уточнить? Например, следующее будет работать тоже:
App.config ($routeProvider, angularFireProvider) ->
$routeProvider.when '/test',
controller: 'TestCtrl'
function TestCtrl($scope, angularFire) {
angularFire("https://<example>.firebaseio.com", $scope, "collection").
then(function() {
// The collection has been resolved and available in $scope.collection
});
}
Является ли это в основном вопрос синтаксическое удобство или мне не хватает функциональности вы хотите в выше?
Update: Для значения должны быть решены до того, как $routeChangeSuccess
событие вызывается:
App.config(['$routeProvider', 'angularFire', function($routeProvider, angularFire) {
$routeProvider.when("/test", {
templateUrl: 'views/test.html'
controller: 'TestCtrl',
resolve: {collection: angularFire("https://<example>.firebaseio.com")}
});
}]);
function TestCtrl(collection) {
// collection has already been resolved to its value.
}
В этом методе '$ routeChangeSuccess' будет выбрасываться перед' angularFire' ресурсы будут решены, не так ли? –
Вы правы - если вы хотите, чтобы значение было разрешено перед событием Fires, вы можете просто переместить вызов в 'angularFire' в свойство разрешения, так как оно возвращает обещание. Я отредактирую ответ, чтобы предоставить фрагмент кода. – Anant
Anant, возможно, вы можете увидеть это, я пытаюсь использовать функциональные возможности решения, но он утверждает, что angularFire является неизвестным провайдером (по соответствующей заметке угловое FireCollection не подходит в этом случае из-за отсутствия области видимости?). aF и aFC работают нормально в другом месте моего кода, но возможно ли что-то, что мне не хватает в использовании его с настройкой и разрешением? – Michael