Публикация входного значения в качестве параметра в API веб-сервиса в Angular
Я начал изучать Angular и застрял на чем-то, что должно быть тривиальным. Я из истории Rails и создал очень простой веб-сервис Rails, который управляет MailingList. В настоящее время в моем веб-сервисе существует 2x конечных точки API:
/api/v1/mailing_lists [GET]
/api/v1/mailing_lists [POST]
Конечной точке POST требуется действительный адрес электронной почты в качестве PARAM в вызове API. И вот где я застрял. Как передать этот параметр моему API в Angular? Я пытался использовать решения со всего Интернета, но я просто не понял это правильно. Вот что у меня пока есть:
В моих services.js:
angular.module('webFrontendApp.services', []).factory('MailingList', function($resource) {
var data = $resource(
'http://localhost:3000/api/v1/mailing_lists.json',
{},
{
// 'get': { method:'GET', cache: false},
'query': { method:'GET', cache: false, isArray:true },
'save': {method: 'POST', cache: false }
});
return data;
});
В app.js
....
.when('/list/new', {
templateUrl: 'views/list-new.html',
controller: 'MailingListCtrl'
})
....
Контроллер как mailinglist.js
angular.module ('webFrontendApp.controllers', [])
.controller('MailingListCtrl', function($scope, MailingList) {
// Get all posts
$scope.mailing_lists = MailingList.query();
// Our form data for creating a new post with ng-model
$scope.memberData = {};
$scope.newMember = function() {
var member = new MailingList($scope.memberData);
member.$save();
};
});
Форма выглядит так:
<form role="form" ng-submit="newMember()">
<div class="row">
<div class="input-group">
<input type="text" ng-model="memberData.email" placeholder="New mailing list member" class="form-control">
<span class="input-group-btn">
<input type="submit" class="btn btn-primary" value="Add">
</span>
</div>
</div>
</form>
Когда я отправляю форму, кажется, ничего не происходит, но я получаю сообщение об ошибке 405 от моего веб-сервиса. После просмотра журналов веб-службы я вижу, что был получен запрос POST, но параметры не были переданы, и поэтому он был отклонен.
Любая помощь будет оценена!
PS. Я убедился, чтобы включить CORS в моем приложении Rails.
1 ответ
Передать параметры внутри $save
метод, передать post_data внутри MailingList
так что в основном это должно работать
$scope.newMember = function() {
var member = new MailingList();
member.$save({email: $scope.memberData.email});
};