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