2015-12-17 5 views
0

у меня есть это в контроллереОтправка данных через запрос POST от углового завода

angular.module('myApp') 
    .controller('TaskController', function ($scope, TaskFactory) { 
    $scope.addTodo = function() { 
     $scope.todos.push({text : $scope.formTodoText}); 
     $scope.formTodoText = ''; 
    }; 
    }); 

и это на заводе

angular.module('myApp') 
    .factory('TaskFactory', function ($q, $http) { 
    var sendTasks = function(params) { 
     var defer = $q.defer(); 
     console.log(1, params); 
     $http.post('http://localhost:3000/task/save', params) 
     .success(function(data) { 
      console.log(2); 
      console.log('data', data); 
     }) 
     .error(function(err) { 
      defer.reject(err); 
     }); 
     return defer.promise; 
    } 

    return { 
     sendTask: function(taskData) { 
     console.log('taskData', taskData); 
     return sendTasks('/task/save', { 
      taskData : taskData 
     }) 
     } 
    } 
    }); 

все, что мне нужно знать, как отправить данные из контроллер на заводе, чтобы выполнить POST по указанному маршруту?

ответ

1

Вам просто нужно вызвать функцию/метод на заводе с необходимыми параметрами.

angular.module('myApp') 
 
    .controller('TaskController', function ($scope, TaskFactory) { 
 
    $scope.addTodo = function() { 
 
     $scope.todos.push({text : $scope.formTodoText}); 
 
     TaskFactory.sendTask({data : $scope.formTodoText}) 
 
     $scope.formTodoText = ''; 
 
    }; 
 
    });

1

You can follow Dan Wahlin blog post.

Контроллер:

angular.module('customersApp') 
    .controller('customersController', ['$scope', 'dataFactory', function ($scope, dataFactory) { 

    $scope.status; 

    dataFactory.updateCustomer(cust) 
     .success(function() { 
      $scope.status = 'Updated Customer! Refreshing customer list.'; 
     }) 
     .error(function (error) { 
      $scope.status = 'Unable to update customer: ' + error.message; 
     });  
} 

Фабрика:

angular.module('customersApp') 
    .factory('dataFactory', ['$http', function($http) { 

    var urlBase = '/api/customers'; 

    dataFactory.updateCustomer = function (cust) { 
     return $http.put(urlBase + '/' + cust.ID, cust) 
    }; 

} 

Надежда, что решить вашу проблему.

0

Вы можете вызвать функцию непосредственно на TaskFactory, который вы передаете в контроллер в зависимости.

Я очищены ваш код немного и создал a plunk for you here:

А вот код:

Контроллер

(function(angular) { 

    // Initialise our app 
    angular.module('myApp', []) 
     .controller('TaskController', function($scope, TaskFactory) { 

     // Initialise our variables 
     $scope.todos = []; 
     $scope.formTodoText = ''; 

     $scope.addTodo = function() { 
     // Add an object to our array with a 'text' property 
     $scope.todos.push({ 
      text: $scope.formTodoText 
     }); 

     // Clear the input 
     $scope.formTodoText = ''; 

     // Call function to send all tasks to our endpoint 
     $scope.sendTodos = function(){ 
      TaskFactory.sendTasks($scope.todos); 
     } 
     }; 
    }); 

})(angular); 

завод

(function(angular) { 

    angular.module('myApp') 
     .factory('TaskFactory', function($q, $http) { 

      var sendTasks = function(params) { 
       var defer = $q.defer(); 
       $http.post('http://localhost:3000/task/save', params) 
        .success(function(data) { 
         console.log('data: ' + data); 
        }) 
        .error(function(err) { 
         defer.reject(err); 
        }); 
       return defer.promise; 
      } 

      return { 
       sendTasks: sendTasks 
      } 

     }); 

})(angular); 
Смежные вопросы