J'ai une usine firebase Auth comme suitretour de l'usine angulaire lorsque la plate-forme ionique prêt
app.factory("Auth", ["$firebaseAuth", "FIREBASE_URL","$ionicPlatform",
function($firebaseAuth, FIREBASE_URL, $ionicPlatform) {
var auth = {};
$ionicPlatform.ready(function(){
var ref = new Firebase(FIREBASE_URL);
auth = $firebaseAuth(ref);
});
return auth;
}
]);
J'injectais l'usine Auth dans ma résolution ui-routeur comme la dépendance mais le temps ui-routeur est configuré le auth est vide parce que la plate-forme prête entre en action par la suite.
app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('menu', {
url: '/menu',
abstract:true,
cache: false,
controller: 'MenuCtrl',
templateUrl: 'templates/menu.html',
resolve: {
auth: function($state, Auth){
//<--Auth is empty here when the app starts ----->
return Auth.$requireAuth().catch(function(){
$state.go('login'); //if not authenticated send back to login
});
}
}
})
Comment puis-je m'assurer que l'usine Auth n'est pas vide avant d'être injectée dans le routeur ui?
J'ai essayé -
app.factory("Auth", ["$firebaseAuth", "FIREBASE_URL","$ionicPlatform",
function($firebaseAuth, FIREBASE_URL, $ionicPlatform) {
return $ionicPlatform.ready(function(){
var ref = new Firebase(FIREBASE_URL);
return $firebaseAuth(ref);
});
}
]);
Mais retourne une promesse qui le rend encore plus compliqué à utiliser.
EDIT: je promesses en usine pour résoudre le problème
app.factory("Auth", ["$firebaseAuth", "FIREBASE_URL","$ionicPlatform","$q",
function($firebaseAuth, FIREBASE_URL, $ionicPlatform, $q) {
var auth = {};
return {
getAuth : function(){
var d = $q.defer();
$ionicPlatform.ready().then(function(){
var ref = new Firebase(FIREBASE_URL);
auth = $firebaseAuth(ref);
d.resolve(auth);
});
return d.promise;
}
};
}
]);
Cela fonctionne, mais je cherche une meilleure solution.
Vous semblez retourner un objet vide dans votre usine. – pro
c'est le problème. Je veux retourner de l'usine seulement après la plate-forme prête – Nikhil