desmondlee
desmondlee

Reputation: 1703

Unable to use $update, $remove and $save in ngresource

I am using ngresource as follows but unfortunately I am unable to access the $update, $remove and $save methods in this way. What am I doing wrong?

angular.module('myApp.services').factory('Entry', function($resource) {
  return {
      method1: $resource('/api/entries/:id', { id: '@_id' }, {
        update: {
          method: 'PUT' // this method issues a PUT request
        }
      }),
      method2: $resource('/api/entries2', {}, {

      })
});

// not working: Entries is not a function at Scope.$scope.save
var entry = new Entries({});
entry.method1.$update();
entry.method1.$save();
entry.method1.$delete();

On the other hand, this works:

angular.module('myApp.services').factory('Entry', function($resource) {
  return $resource('/api/entries/:id', { id: '@_id' }, {
    update: {
      method: 'PUT' // this method issues a PUT request
    }
  });
});

var entry = new Entries({});
entry.$update();
entry.$save();
entry.$delete();

Upvotes: 2

Views: 349

Answers (1)

shershen
shershen

Reputation: 9993

So your second example doing $resource('http://example.com/resource.json') is the correct usage of that construction, while the first one is not.

After executing var entry = new Entries({}); you get entry as factory instance in your controller, which has available actions that you've defined for it.

UPD

You can have multiple resources in the service - https://stackoverflow.com/a/17163459/405623. In your example you've just missed the ['ngResource'] DI in your module.

Upvotes: 1

Related Questions