[英]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.