0

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

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

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

的JSON的REST服务返回的是 - >

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

我转换使用gson.toString(verifyNumber Java中的POJO到JSON类);

但是,当我尝试在控制器进行服务调用后检查phonenumber的值时,它始终未定义。任何人都可以请帮忙。当我硬编码的价值返回JSON,它工作正常,但没有与服务。

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

这里没有足够的细节来重现您的问题。在你的问题中,你说你检查'phonenumber'的值,但是#1它是'phoneNumber'和#2,你的警报是打印'uuid',而不是'phonenumber'。 – Claies

+0

@Claies - 您可以使用phoneNumber而不是uuid。任何事情都可以解决我的问题。我花了2个小时,但不知道:( – AngryJS

+0

,但是你到底在问什么?你说它在硬编码时有效,但在你拨打服务电话时不起作用,但你没有列出该服务的代码。 – Claies

回答

1

您没有正确使用$resource。从Angular Documentation for $resource

•HTTP GET “下课” 的行动:Resource.action([parameters], [success], [error])

•非GET“类对象或实例对象

的操作方法可以用下面的参数调用类”动作:Resource.action([parameters], postData, [success], [error])

•非获得实例操作: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'} }; 

因此,你应该考虑获取单个值时,而不是修改queryisArray财产使用get代替query,只要有可能。

+0

你是男人!完成!它现在有效!真棒! – AngryJS

+0

如果您有兴趣,我在答案上增加了一些信息。 – Claies