javascript - Using an embedded resource URL in AngularJS $resource -


so, have rest resource along these lines...

/api/dogs /api/dogs/1 /api/dogs/2 ... 

where dog looks like...

{     id: 1,     url: "http://kennelclub/api/dogs/1",     name: "butch" } 

and second resource so...

/api/owners /api/owners/1 .... 

as convenience, dogs owner have method of querying...

/api/owners/1/dogs/ 

now, it's trivially easy angularjs $resource read owners dogs, follows...

var ownersdogs = $resource("/api/owners/:ownerid/dogs/:dogid", { dogid: "@id" }); var ownersdogs.query({ ownerid: 1 }); 

finally, question

i want make change dog obtained via url magic angular $save function...

ownersdogs[0].name = "barry"; ownersdogs[0].$save(); 

however, there 2 problems here...

  • this convenience resource url read (i.e. doesn't accept put/post).
  • even if wasn't, need re-supply ownerid $get/$save functions on objects work correctly.

if want edit dog returned, need use /api/dogs/1 url. both allows read/write, , doesn't require ownerid. you'll notice url embedded in dog object returned.

is there way can $save, $get, etc. functions on returned object automatically(?) use url embedded in resource? or @ least, there way change url $save use?

you can add custom methods resource custom url :

var ownersdogs = $resource("/api/owners/:ownerid/dogs/:dogid", { dogid: "@id" },     {     'savedog': { method : 'put', url: '/api/dogs/:dogid'}     } ); 

calling :

ownersdogs[0].$savedog(); 

Comments