Я хотел бы использовать AngularFire для привязки $rootScope.demo
к модели Firebase.
<!DOCTYPE html>
<html ng-app="Demo">
<head>
<meta charset="utf-8">
<title>Demo</title>
<script src="//code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<script src="//code.angularjs.org/1.3.0-beta.5/angular-route.js"></script>
<script src='//cdn.firebase.com/js/client/1.0.11/firebase.js'></script>
<script src="//cdn.firebase.com/libs/angularfire/0.7.1/angularfire.min.js"></script>
</head>
<body ng-view>
</body>
</html>
angular.module("Demo", ["ngRoute", "firebase"])
.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
var resolve = {
whatever: function ($q, $rootScope, $firebase) {
var defer = $q.defer();
// I use a different URL in my app as you might guess
var demoRef = new Firebase("https://demo.firebaseio.com");
$firebase(demoRef).$bind($rootScope, "demo").then(function() {
defer.resolve($rootScope.demo);
});
return defer.promise;
}
};
$routeProvider
.when("/", {
controller: function($scope) {
$scope.message = "Hello World!";
},
template: "<div>{{ message }}</div>",
resolve: resolve
})
.otherwise({
redirectTo: "/"
});
});
К сожалению, я получаю следующую ошибку:
Неперехваченное тело документа не инициализировано. Подождите, чтобы инициализировать Firebase, пока документ не будет готов.
Почему это? Как бы вы это исправить?
ДОПОЛНИТЕЛЬНЫЙ ВОПРОС
В идеале я хотел бы, чтобы моя модель Firebase находилась в службе, а не в $rootScope
, но я не был уверен, как загрузить модель Firebase в службу до загрузки приложения. Любые идеи?