2015-06-29 1 views
0

Может кто-то пролить свет на это?ngResource save() странное поведение

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. Я надеюсь, что в этом есть смысл.

ответ

1

Try что-то вроде этого

Module.factory("Discount", ["$resource", function ($resource) { return $resource(GLOBALS.apiPath + "discounts/:Id", { Id: "@Id" }, { 
      somthingCustomIfNeeded: { method: 'POST', url: GLOBALS.apiPath + "something-custom" } 
     }); }]); 

Обратите внимание на { Id: "@Id" } объекта? Это говорит Угловое, как решить, что: Id переменной Quote

из документации

Если значение параметра с префиксом @, то значение этого параметра будет извлекаться из соответствующего свойства на объекте данных (при условии, при вызове метода действия). Например, если объект defaultParam является {someParam: '@someProp'}, то значение someParam будет data.someProp

Подробнее здесь https://docs.angularjs.org/api/ngResource/service/ $ ресурса (поиск "paramDefaults")

+0

You Сэр, мой герой. Это прекрасно работает, но почему? У меня создалось впечатление, что save() автоматически является POST. В этом случае нам нужно определить его как таковое вручную? – Dbrandt

 Смежные вопросы

  • Нет связанных вопросов^_^