Я прочитал много статей, но до сих пор не смог найти, как вкладывать вещи в сервисы.Какие вещи я могу использовать в угловых Js
В настоящее время это моя служба
angular
.module('users')
.factory('objectiveService', objectiveService);
objectiveService.$inject = ['$http', 'Restangular'];
function objectiveService($http, Restangular) {
return {
getObjectives: getObjectives,
getSingleObjective: getSingleObjective
};
function getObjectives(pid) {
var pr = Restangular
.all('api')
.all('users')
.one('subjects', pid)
.all('objectives');
return pr;
}
function getSingleObjective(oid) {
var pr = Restangular
.all('api')
.all('users')
.one('objectives', oid);
return pr
}
}
Это контроллер:
var _vm = this;
this.objPromise = objectiveService.getObjectives(44);
function getData() {
var promise = _vm.objPromise;
promise
.getList(filters)
.then(function(result) {
$scope.gridData = result;
});
}
function remove(id) {
if (confirm('Are you sure you want to delete this!')) {
objectiveService.getSingleObjective(id).remove().then(function() {
$scope.getData();
});
}
}
// initial call
$scope.getData();
В этом коде я в основном вижу смысла нет, чтобы определить службу, потому что я до сих пор использовать then()
в контроллере назначить данные Grid.
Также я не могу использовать then()
в службе, потому что у меня нет $ scope для обновления данных.
Люди говорят, что делают все на службе, но я не могу понять, как это сделать.
В идеале я хочу поставить все функции, такие как remove(object_id)
в обслуживании
IS возможно, что я могу просто сделать objectiveService.remove(id)
в контроллере.
Но тогда я должен позвонить $scope.getData()
после удаления которой я не могу сделать в службе
В чем проблема с вызовом '.then' в контроллере? Это нормально. Контроллер явно имеет дело с просто назначением данных в ViewModel (внутри '. Then', в данном случае), и служба имеет дело с бэкэнд. Четкое разделение проблем –
@NewDev. Тогда проблема связана с функцией ошибки. Потому что я всегда показываю erros в верхней части, и код такой же. но я должен повторить это во всех функциях 'then()'.Есть ли способ, которым мои апромиты используют ту же самую функцию ошибки – user3214546
, создайте единую функцию, скажем 'errorHandler', и просто передайте ссылку на нее:' getObjectives(). Catch (errorHandler) ' –