@okuznetsov1

Как передавать параметры из сервиса в контроллер?

Реализовал сервис добавления и получения данных из таблицы. После добавления записи в таблицу нужно организовать передачу параметра из сервиса в контроллер. Данный параметр будет сигнализировать контроллеру, что данные успешно добавились, и соответственно контроллер может выполнить push. Если не правильное предлагаю решение, то подскажите как реализовать правильно?

service.dataByCommands.js:

(function(){
   'use strict';

    angular
        .module('service.dataByCommands',[])
        .factory('serviceDataByCommands', serviceDataByCommands);

        function serviceDataByCommands($http) {

            var _vm;
            
            return {
                name: 'Commands Service',
                add: function (vm) {
                    
                    _vm = vm;
                    
                    $http.post('addData.php',{genCommand:vm.newGenerationCommand, description:vm.newDescription})
                        .then(function(response) {

                            RETURN ('SUCCESS');
                            
                        })
                        .catch(function(error) {
                            console.log(error);
                        });                    
                    
                },
                get: function (callback) {
                        $http.get('getData.php')
                            .then(function(response) {
                                callback(response.data);
                            },
                            function(error) {
                                console.log(error);
                            });
                }
            }
            
        }
        
})();


controllers.js:

var vm = this;
.....

serviceDataByCommands.get(function(data){
     vm.lists = data;
});
        
vm.addCommand = function() {
    var status = serviceDataByCommands.add(vm);

    if (status === 'success'){

                            vm.notify('Данные успешно добавленны!');

                            vm.lists.push({
                                    id: response.data.id,
                                    command: response.data.command,
                                    description: response.data.description,
                                    completed: response.data.completed
                            });

   }

};

.....
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
@okuznetsov1 Автор вопроса
в сервисе:

function serviceDataByCommands($http) {
            
            return {
                name: 'Commands Service',
                add: function (vm) {

                    return $http.post('addData.php',{genCommand:vm.newGenerationCommand, description:vm.newDescription});     
                        
                },
                ...........................


в контроллере:

vm.addCommand = function() {

serviceDataByCommands
.add(vm)
.then(function(response) {

vm.notify('success','Команда "' + response.data[0].command + '" успешно сохранена!');

vm.lists.push({
id: response.data[0].id,
command: response.data[0].command,
description: response.data[0].description,
completed: response.data[0].completed
});

})
.catch(function(error) {
console.log(error);
});
};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SergeyBugai
В сервисе делаете
return  $http.get('getData.php')
                            .then(function(response) {
                                return response.data;
                            },
                            function(error) {
                                console.log(error);
                            });


и в контролере
var status = serviceDataByCommands.add(vm);
status.then(function(response){

    if (response=== 'success'){

                            vm.notify('Данные успешно добавленны!');

                            vm.lists.push({
                                    id: response.data.id,
                                    command: response.data.command,
                                    description: response.data.description,
                                    completed: response.data.completed
                            });

   }
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы