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/$savefunctions 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
Post a Comment