Yop essaye ceci :
BiduleApp.factory('Story', function ($http, $q) {
var factory = {
storys : false,
getStorys : function(){
var deferred = $q.defer();
if(factory.storys !== false){
deferred.resolve(factory.storys);
}else{
$http.get('data/storys.json')
.success(function(data, status){
factory.storys = data;
deferred.resolve(factory.posts);
}).error(function(data, status){
deferred.reject('Impossible de récupérer les histoires');
})
}
return deferred.promise;
},
getStory : function(id){
var deferred = $q.defer();
var story = {};
$http.get('data/storys.json')
.success(function(data, status){
story= data;
deferred.resolve(story);
})
.error(function(data, status){
//on réenvois un message d'erreur
deferred.reject('Impossible de récupérer les articles, ERROR 999');
});
// }
// });
story = deferred.promise;// j'inclus mon retour de promesse dans mon objet story
return story;// je return mon story
}//fin de ma function getStory
}
return factory;// je retourne mon objet factory
})
ou simplement de modifier ton controller :
BiduleApp.controller('StorysCtrl', function($scope, Story, $routeParams){
$scope.loading = true;
$scope.storys = Story.getStorys().then(function(storys){
$scope.loading = false;
$scope.storys = storys;
}, function(msg){
alert(msg);
})
$scope.story = Story.getStory().then(function(story){
$scope.loading = false;
$scope.story = story;
}, function(msg){
alert(msg);
})
})
sinon si sa ne fonctionne toujours pas pm me