Может кто-то пролить свет на это?
var discountResource = $resource(GLOBALS.apiPath + 'discounts/:id');
var discountResponse = discountResource.save($scope.discountForm);
В результате получается GET/скидки
Однако это приводит к POST/скидкам (ожидаемое поведение)
var discountResource = $resource(GLOBALS.apiPath + 'discounts');
var discountResponse = discountResource.save($scope.discountForm);
Я очень зациклен на этом, так как я хотел бы использовать первый вариант, с объявлением заполнителя. Но для жизни я не могу заставить его работать.
Причина, по которой я хочу вариант 1, - это то, что я могу декальрировать его на заводе и вставлять ресурс в мои контроллеры. В основном я не хочу обновлять его каждый раз, когда мне нужно взаимодействие с API. Я надеюсь, что в этом есть смысл.
Попробуйте что-то вроде этого
Module.factory("Discount", ["$resource", function ($resource) { return $resource(GLOBALS.apiPath + "discounts/:Id", { Id: "@Id" }, {
somthingCustomIfNeeded: { method: 'POST', url: GLOBALS.apiPath + "something-custom" }
}); }]);
Обратите внимание на объект { Id: "@Id" }
? Он сообщает Angular, как решить эту проблему: переменная Id
Цитата из документации
Если значение параметра имеет префикс @, то значение для этого параметра будет извлечено из соответствующего свойства объекта данных (предоставленного при вызове метода действия). Например, если объектом defaultParam является {someParam: '@someProp'}, то значением someParam будет data.someProp
Подробнее здесь https://docs.angularjs.org/api/ngResource/service/ $ resource (поиск "paramDefaults")