0

我不确定这有什么问题,但不知何故无法读取 $scope 的正确值。

这是我在控制器上的代码 -->

$scope.verifyMobile = SearchFactory.verify.query({uuid: uuid});

rest 服务返回的 JSON 是 -->

 verifyNumber -- > {"id":1,"uuid":"2222","phoneNumber":"782941768355"}

我使用 gson.toString(verifyNumber Java class) 将 POJO 转换为 JSON;

但是当我在控制器进行服务调用后尝试检查电话号码的值时,它总是未定义。有人可以帮忙吗?当我将值硬编码为返回的 JSON 时,它工作正常,但不适用于服务。

 alert(JSON.stringify($scope.verifyMobile).uuid);
4

1 回答 1

1

你没有$resource正确使用。来自Angular 文档$resource

可以使用以下参数调用类对象或实例对象上的操作方法:

•HTTP GET“类”动作:Resource.action([parameters], [success], [error])

•非GET“类”动作:Resource.action([parameters], postData, [success], [error])

•非GET实例动作:instance.$action([parameters], [success], [error])

query()是一个 GET "class" 动作,所以正确的调用是:

SearchFactory.verify.query({uuid: uuid}, function(data){
    //do something here on successful data retrieval
    $scope.verifyMobile = data;
}, function(){ 
   //do something here on failure
});

值得注意的是,原来的调用确实有效,但是因为它是一个异步调用,所以返回的是承诺,而不是实际的数据。

同样值得注意的是,标准化的 HTTP 操作$resource如下所示:

{ 'get':    {method:'GET'},
  'save':   {method:'POST'},
  'query':  {method:'GET', isArray:true},
  'remove': {method:'DELETE'},
  'delete': {method:'DELETE'} };

因此,您应该尽可能在检索单个值时考虑使用get而不是修改属性。queryquery isArray

于 2015-09-04T22:21:53.297 回答