2015-11-25 127 views
1

我正在使用$ resource在Angular中執行一些基本的CRUD內容,但我不認爲我理解如何使用不同的資源方法。從角度資源獲取承諾

據我所知,在「常規」方法 - save()get()等同步發生,你可以在回調函數傳遞給在完成運行,如果你想要做的「經典」 JS異步調用。每個人的結果還有一個$promise屬性,它返回一個承諾,如果你想以這種方式進行異步(我願意!)。 (除了原因我也不明白)get()query()。這些$方法是否爲.$promise的快捷方式?如果是這樣,爲什麼沒有$get()$query()

+0

可能的重複:http://stackoverflow.com/questions/21628787/difference-between-save-and-save-to-resource-in-angularjs – lintmouse

+0

這回答了一些,謝謝。但它沒有回答哪些方法返回值或承諾。 – Mourndark

回答

1

是的,ngResource的文檔很難理解。 基本上你需要區分

集體訴訟和
  • 實例操作($資源的方法)
  • 集體訴訟($資源的實例的方法),如

    之間
    • var User = $resource('/user/:userId', {userId:'@id'}); 
      User.get({userId:123}, function(user) { 
          user.abc = true; 
          user.$save(); 
      }); 
      

      有一個額外的屬性$promise,當數據從$http請求返回時解析。這就是爲什麼這可以寫成:

      User.get({userId:123}) 
          .$promise.then(function(user) { 
           $scope.user = user; 
          }); 
      

      從文檔:

      當數據從服務器返回,則對象是資源類的 實例。保存,刪除和刪除 的操作可用作帶$前綴的方法。這使您可以輕鬆地 在這樣 服務器端數據執行CRUD操作(創建,讀取,更新,刪除):

      這就是爲什麼user.$save();可以在例如在上面的例子中調用。

    +0

    那麼所有的類操作都有'$ promise'屬性嗎? – Mourndark

    +0

    至少看起來如此。 Docs說'類操作返回空實例(帶有$ promise屬性)' –

    +0

    所以他們這樣做!謝謝。 – Mourndark