$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