我不确定这有什么问题,但不知何故无法读取$ scope的正确值。
这是我在控制器上的代码 - >
$scope.verifyMobile = SearchFactory.verify.query({uuid: uuid});
休息服务返回的JSON是 - >
verifyNumber -- > {"id":1,"uuid":"2222","phoneNumber":"782941768355"}
我使用gson.toString(verifyNumber Java类)将POJO转换为JSON;
但是当我在控制器上进行服务调用后尝试检查phonenumber的值时,它总是未定义。任何人都可以帮忙。当我将值硬编码为返回的JSON时,它可以正常工作,但不能用于服务。
alert(JSON.stringify($scope.verifyMobile).uuid);
答案 0 :(得分:1)
您没有正确使用$resource
。来自Angular Documentation for $resource
:
可以使用以下参数调用类对象或实例对象上的操作方法:
•HTTP GET“类”操作:
Resource.action([parameters], [success], [error])
•非GET“类”行动:
Resource.action([parameters], postData, [success], [error])
•非GET实例操作:
instance.$action([parameters], [success], [error])
query()
是一个GET“类”操作,因此正确的调用将是:
SearchFactory.verify.query({uuid: uuid}, function(data){
//do something here on successful data retrieval
$scope.verifyMobile = data;
}, function(){
//do something here on failure
});
值得注意的是,原始调用 确实有效,但由于它是异步调用,所返回的是承诺,而不是实际数据。
另外值得注意的是,$resource
的标准化HTTP操作如下所示:
{ 'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'} };
因此,在检索单个值时,应考虑使用get
而不是query
,而不是尽可能修改query
isArray
属性。