2014-10-30 14 views
0

我瞭解,$資源的AngularJS的概念是回到正確的模式來獲取相關數據

  • 的資源,表示該資源的對象(獲取,更新,刪除)
  • 代表這個資源的對象列表(查詢)

我正在使用後端,它不能在一次性提供所有需要的信息。

例如:/User/:id

user = User.get({id: userId});返回用戶。大。

如果我需要讓他的朋友的數量,我還有一個請求至極將是這樣的:

/User/:id/count=friend

,並返回:

{ count: 17 }

我在這裏卡住了,我無法使用我的user變量,否則我將失去我的用戶對象。此外,結果將是一個數字,這不代表我的用戶了。

'髒'的方法是回到$http爲此,並將結果分配到user.friendsNumber = data.count

但仍然不乾淨,如果我user.$put()東西,我失去了我user.friendsNumber因爲它會被重新分配。

正確處理這個問題的正確方法是什麼?

+0

聲明自定義操作? '$ resource(url,[paramDefaults],[actions],options);' – merlin 2014-10-30 08:39:06

回答

2

你可以像這樣指定動作,我相信額外的參數只是成爲常規的獲取變量。

angoApp.factory('User', function($resource) { 
    return $resource('/User/:id', { 
    id: '@id' 
    }, { 
    countFriends: { 
     method: 'GET', 
     params: { 
     count: 'friends' 
     } 
    } 
}); 

... 

User.$countFriends({id:123}); 
//This should call /User/123?count=friends 
+0

添加自定義操作和執行請求沒有問題,這是我目前正在做的。但我覺得這不是乾淨的。 我感興趣的是將'countFriend'等更多屬性賦給父'user'資源(已解決),我有時會更新它,所以會丟失像'countFriend'這樣新分配的屬性。 – Laurent 2014-10-30 11:30:02

+0

所以這聽起來更像是你正在尋找像本地存儲一樣的持久性?資源管理CRUD,但維護響應數據只是處理該對象的問題。 – Dylan 2014-10-30 18:15:58