$scope 值无法在控制器中读取

$scope value not able to read in controller

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

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

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

rest服务返回的JSON是-->

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

我使用 gson.toString(verifyNumber Java class);

将 POJO 转换为 JSON

但是当我尝试在控制器进行服务调用后检查 phonenumber 的值时,它总是未定义。谁能帮忙。当我将值硬编码为返回 JSON 时,它工作正常但不支持服务。

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

您没有正确使用 $resource。来自 Angular Documentation for $resource:

The action methods on the class object or instance object can be invoked with the following parameters:

•HTTP GET "class" actions: Resource.action([parameters], [success], [error])

•non-GET "class" actions: Resource.action([parameters], postData, [success], [error])

•non-GET instance actions: 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
});

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

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

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

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