Значение $scope не может прочитать в контроллере
Я не уверен, что с этим не так, но почему-то не могу прочитать правильное значение $ scope.
Вот мой код на контроллере ->
$scope.verifyMobile = SearchFactory.verify.query({uuid: uuid});
JSON, возвращаемый службой отдыха ->
verifyNumber -- > {"id":1,"uuid":"2222","phoneNumber":"782941768355"}
Я конвертирую POJO в JSON с помощью gson.toString (класс Java verifyNumber);
Но когда я пытаюсь проверить значение phonenumber после вызова службы в контроллере, оно всегда отображается как неопределенное. Может кто-нибудь, пожалуйста, помогите. Когда я жестко кодирую значение возвращаемого JSON, оно работает нормально, но не с сервисом.
alert(JSON.stringify($scope.verifyMobile).uuid);
1 ответ
Вы не используете $resource
правильно. Из угловой документации для $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
вместо query
при получении одного значения вместо изменения query
isArray
собственность, когда это возможно.