Я угловой нуб и очень разочарован конкретной проблемой.
У меня есть ресурс $resource, возвращающий данные с сервера, который содержит пары ключ/значение, т.е. detail.name, detail.email и т. д.
Я могу получить доступ к этой информации в представлении, используя нотацию {{detail.name}}
, но я не могу получить к ней доступ в коде, что сводит меня с ума, так как мне нужны эти данные для работы.
Как я могу получить к нему доступ в бэкэнде?
вот код, генерирующий данные:
mydata = Appointment.get({id: $stateParams.id}, function(data){
geocoder.geocode(data);
$scope.detail = data;
});
на представлении у меня есть следующее:
<address class="text-left">
{{detail.address_1}}</br>
{{detail.city}}</br>
{{detail.postcode}}</br>
</address>
</hr>
<p> {{detail.lat}}</p>
<p> {{detail.lng}}</p>
<p> {{center}}</p>
это все в порядке.
однако, если я добавлю console.log($scope.detail.lat)
в обратный вызов $resource, я получу неопределенность.
Вот определение ресурса:
angular.module('MyApp')
.factory('Appointment', function($resource){
return $resource('/api/admin/:id', { id: "@_id" }, {
query: {method:'GET', isArray:true},
update: { method:'PUT' }
});
})
и фабрика геокодера, если кому интересно:
angular.module('MyApp')
.factory('geocoder', ['$http','$state', function($http, $state){
var geocoder ={};
geocoder.geocode = function (formData){
var myformData = {};
var address = formData.address_1+', '+formData.city+', '+formData.postcode;
var key = 'AIzaSyACVwB4i_6ujTrdjTMI-_tnsDrf6yOfssw';
$http.get('https://maps.googleapis.com/maps/api/geocode/json?address='+address+'&key='+key).
success(function(results, status, headers, config) {
var results = results.results[0];
formData.lat = results.geometry.location.lat;
formData.lng = results.geometry.location.lng;
myformData = formData;
return myformData;
// this callback will be called asynchronously
// when the response is available
}).
error(function(results, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
}
return geocoder;
}])
Кто-нибудь может помочь?
$http
и использовать разрешение обещанияthen()
для установки данных. Очень нужно понять, что означаетasynchronous
, и глубоко изучить ссылку, которую я дал в вашем последнем вопросе. - person charlietfl   schedule 04.05.2015