#javascript #angularjs #angular-services #angular-promise
#javascript #angularjs #angular-сервисы #angular-обещание
Вопрос:
Как поместить этот код в сервис? (это из https://github.com/paulocaldeira17/angular-websql ) Я имею в виду, что я хочу передать имя таблицы, а затем получить массив с пользователями. Я думаю, мне следует использовать promises, но я понятия не имею, с чего начать.
$scope.db.selectAll("table_users", function(results) {
$scope.users = [];
for(var i=0; i < results.rows.length; i ){
$scope.users.push(results.rows.item(i));
}
$scope.$apply();
})
Ответ №1:
Для операций websql лучше использовать promises.
SampleService.getUsers("table_name").then(function(){
console.log("Array of users");
});
Обслуживание
getUsers:function(table_name){
var deferred = $q.defer();
$scope.db.selectAll("table_users", function(results) {
$scope.users = [];
for(var i=0; i < results.rows.length; i ){
$scope.users.push(results.rows.item(i));
}
deferred.resolve($scope.users);
});
return deferred.promise;
}
Код не является фактическим, но он даст вам общее представление о решении проблемы.
Некоторая ссылка на использование обещаний $ q в angularjs
Комментарии:
1. Спасибо! Но у меня всегда возникают проблемы с .then(function(){}) в контроллерах, потому что код в then выходит за рамки контроллера rest. Хотя я использую государственного провайдера, где есть отличная вещь — resolve, которая решает зависимость, но в случае, если я не использую государственного провайдера, как справиться с этой проблемой?
2. Просто слишком быстро нажал добавить комментарий 😉