Bonjour les gars je le code suivant ici:AngularJS pas en attente de requête HTTP à faire
angular.module('todomvc')
.factory('todoStorage', function ($http) {
'use strict';
var STORAGE_ID = 'todos-angularjs';
return {
get: function() {
$http({method: 'GET', url: '/api/todo.php'}).
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
return JSON.stringify(data);
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
},
put: function (todos) {
debugger;
localStorage.setItem(STORAGE_ID, JSON.stringify(todos));
}
};
});
ainsi que
angular.module('todomvc')
.controller('TodoCtrl', function TodoCtrl($scope, $routeParams, $filter, todoStorage, $http) {
'use strict';
var todos = $scope.todos = todoStorage.get();
$scope.newTodo = '';
$scope.editedTodo = null;
$scope.$watch('todos', function (newValue, oldValue) {
$scope.remainingCount = $filter('filter')(todos, { completed: false }).length;
$scope.completedCount = todos.length - $scope.remainingCount;
$scope.allChecked = !$scope.remainingCount;
if (newValue !== oldValue) { // This prevents unneeded calls to the local storage
todoStorage.put(todos);
}
}, true);
La question que j'ai est que la requête HTTP ne termine pas avant le code à $ scope. $ watch est en cours d'exécution, donc il appelle .length sur undefined. Je suis un total n00b à Angular et je voulais utiliser ce TodoMVC pour le faire fonctionner mais je ne suis pas sûr de ce que je peux faire pour arrêter tout le processus au lieu d'encapsuler le reste du code dans le rappel de succès de la requête http.
Merci à l'avance
L'ensemble du code est terminé @ http://pastebin.com/5vkpHyUU – user3621357
Utilisez-vous 'ngRoute'? Ensuite, vous pouvez utiliser la fonction de résolution. – zeroflagL
@ user3621357 Avez-vous de la chance avec l'une des réponses? – PSL