2013-11-28 25 views
0

國土資源結構,我有結構API:AngularJS的API

api: { 
    users: { 
     details: {}, 
     actions: {} 
    }, 
    settings: { 
     users: {} 
    } 
} 

例如:

GET/API /用戶的用戶
返回列表

GET/API /用戶/ 1
返回ID爲的用戶1

GET/api/users/1/details
回報用戶deteils

GET/API /用戶/ 1 /信息/圖片
回報用戶用別名照片)fetail

我寫

.factory('userService', function($resource){ 
     return $resource('/api/users/:id/:items/:itemsId', {}, { 
      query: { method: 'GET', isArray: false } 
     }); 
    }); 

現在我能做的userService.query(和讓用戶
的名單,但如果我不能老是這樣做,因爲這:

var users = userService.query(); 
users[1].name = 'newName'; 
users[1].save(); 

用戶[1 ] don t save edited info because users[1] don t有資源方法,資源只有用戶。

我不能老是這樣做,因爲這:

var users = userService.query(); 
users[1].get('deteils'); 

如何新增地質礦產方法爲我所有的結構?

+0

可能重複的[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Stewie

回答

0

首先,您必須使用$符號前綴實例方法,如users[1].$save()

那麼你爲什麼要將isArray設置爲false,但將結果視爲數組?

您還應該將id參數綁定到用戶的id屬性。我認爲它被稱爲id

所以,你會做這樣的事情:

.factory('userService', function($resource){ 
    return $resource('/api/users/:id/:items/:itemsId', { id: '@id' }); 
}); 

請注意,您必須指定參數items和您的通話itemsId,否則會被排除在外。 例如: -

var users = userService.query(); 
users[1].name = 'newName'; 
// assume users[1].id===1 
users[1].$save(); 
// will do a POST /api/users/1 

users[1].$get({ items: 'details' }); 
// will do a GET /api/users/1/details 

users[1].$get({ items: 'details', itemsId: 'photo' }); 
// will do a GET /api/users/1/details/photo 

PS:也許你也應該檢查是否在默認的方法(上市here)適合您的REST API,否則你應該自己定義。