$resource.get
方法,默認情況下,預計JSON響應是一個對象(解析時)。 當調用$resource.get()
時,結果將成爲$資源的一個實例。
在你的榜樣,呼籲Member.get({id:1})
會產生被與解析的JSON響應的特性呼喚new Member()
source然後populated source(當XHR完成)創建的$資源實例:
shallowClearAndCopy(data, value);
的簽名功能與您的Member
例如填充如下:
function shallowClearAndCopy(src, dst) {
dst = dst || {};
angular.forEach(dst, function(value, key){
delete dst[key];
});
for (var key in src) {
if (src.hasOwnProperty(key) && key.charAt(0) !== '$' && key.charAt(1) !== '$') {
dst[key] = src[key];
}
}
return dst;
}
掃視函數體中,你會發現該功能並不期望src
參數只能是對象(for (var key in src) { ...
)。所以,如果你爲它提供字符串"null"
結果將是:
{1: "n", 2: "u", 3: "l", ...}
ngResource是建立在支持與一個JSON API的REST類型作爲一個隱含的數據傳輸格式,因此你將無法使用響應,如"null"
或其他任何不是有效JSON的內容。
除非。
除非你使用的transformResponse
到"null"
轉換爲類似{'null': true}
上飛:
app.factory('Member', function($resource) {
var Member = $resource('member.txt', {}, {
get: {
method: 'GET',
isArray: false,
transformResponse: function(data, headersGetter){
if(data === 'null'){
return {null: true};
}
return angular.fromJson(data);
}
}
});
return Member;
});
$scope.member = Member.get({id: 1});
console.log($scope.member); // --> {null: true}
DEMO
爲什麼這些好的未受請求問題得到這麼少的關注,這些天? Btw @stewie回答了關於點(y) – angabriel