$ scope值无法在控制器

时间:2015-09-04 21:48:05

标签: angularjs angularjs-scope angularjs-service angularjs-rootscope

我不确定这有什么问题,但不知何故无法读取$ 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);

1 个答案:

答案 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属性。