簡體   English   中英

Angular.js $資源服務操作方法

[英]Angular.js $Resource service action methods

我正在查看angularJS $ Resource服務文檔,但遇到了一些奇怪的事情。 https://docs.angularjs.org/api/ngResource/service/ $ resource)

有一些自定義操作方法,您也可以定義自己的方法。 然后,可以使用以下參數調用這些方法:

HTTP GET "class" actions: Resource.action([parameters], [success], [error])
non-GET "class" actions: Resource.action([parameters], postData, [success], [error])

但是,在后面的示例中,使用了默認的操作方法:

'query':  {method:'GET', isArray:true}

被這樣稱呼:

var CreditCard = $resource('/user/:userId/card/:cardId',
  {userId:123, cardId:'@id'}, {
   charge: {method:'POST', params:{charge:true}}
  });

var cards = CreditCard.query(function() {
  // GET: /user/123/card
  // server returns: [ {id:456, number:'1234', name:'Smith'} ];
   var card = cards[0];
   ...
});

如您所見,查詢方法的第一個參數是成功回調函數(至少,這就是我所假設的)而不是[parameters]參數。 我期望:

var cards = CreditCard.query({}, function() { ... });

我是否缺少某些內容,或者如果不需要,可以簡單地省略第一個參數嗎?

我知道這是一個愚蠢的問題,但我想確保我在這里沒有記錯...

是的,如果您不想隨請求傳遞任何參數,則可以省略第一個參數。 如文檔中所述:

可以使用以下參數調用類對象或實例對象上的操作方法:

HTTP GET“類”操作:Resource.action([參數],[成功],[錯誤])

[]括號表示這是可選的,因此,如果未提供“參數”,則期望的值為成功和錯誤回調。

Resource.action([parameters], [success], [error])[]括號表示這些參數是可選的,可以省略。

但這並不能說明如果僅將單個回調作為參數傳遞,並且您會認為:

由於這些參數都是可選的,因此將其視為[parameters]還是[success][error] ,甚至不計入非GET操作的postData

我不確定文檔中是否提到了這一點。 但是,為澄清起見,讓我們探索angularjs源代碼,您將找到確切的邏輯。

https://github.com/angular/angular.js/blob/v1.2.21/src/ngResource/resource.js#L470

這是對GET請求有效的所有組合。

// 4 arguments
params, data, success(), error() 

// 3 arguments
params, data, success()
params, success(), error()

// 2 arguments
params, success()
success(), error()

// 1 argument
success()
params

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM