У меня есть 2 входа для ввода тегов для страны и штата. В настоящее время они работают с начальными строковыми значениями, заданными переменными в угловом контроллере. Я хочу получить эти 2 переменные из службы с геокодированием W3C и URL-адресами google-map и установить шаблон HTML с ними при загрузке страницы.установить начальное значение угловой выбор из службы
У меня много проблем, но сначала я хочу, чтобы жесткий объект в службе обновлял контроллер, который, в свою очередь, обновляет HTML. Я потратил много времени на эту передачу данных, и я не могу ее получить. Затем я изменю жесткий кодированный объект, чтобы прокормить его данные местоположения с google-map, которые я делал раньше.
HTML, является:
<select id="country"data-ngmodel="cntrl.input.countrySelected"
data-ng-options="country.code as country.text group by country.continent for country in cntrl.input.countries" >
</select> //cntrl.input.countries is set from a factory via the controller
<select id="state" data-ng-model="cntrl.input.stateSelected"
data-ng-options="state.code as (state.code + ' - ' + state.text) for state in cntrl.input.state" >
</select> //cntrl.input.state is set from a factory via the controller
Я использую контроллер, как и соответствующий код контроллера:
//cntrl.input.countrySelected = "US"; //hard coded works
//cntrl.input.stateSelected = "NY"; //hard coded works
//Edited, though still not working. Now just
cntrl.input.countrySelected = getUserGeolocateService.getUserLocation();
//cntrl.input.countrySelected = function initialCountry() {
//getUserGeolocateService.getUserLocation() //getUserLocation from getUserGeolocateService in getUserGeolocate.service.js
//.then(function(locationName4) {
//return locationName4[country]; //object containing country and state
//});
//}
Я не могу получить эту работу, так что я ничего не написал для установки начальной переменной состояния. Это будет тот же формат, что и инструкция рабочей страны.
Я попытался сделать служебный код как другой метод/функцию, которая работает для предоставления разных данных местоположения. Я новичок в обеих услугах и обещаниях. Соответствующий код для углового сервиса:
(function() { "use strict";
angular.module("residenceApp").service("getUserGeolocateService", function($http, $q, uiGmapGoogleMapApi) {
this.getUserLocation = function(){
var countryCode, stateCode, county, location4;
var deferred = $q.defer();
location4 = {};
location4 = { "country": "US", "state": "NY"};
deferred.resolve(location4);
console.log("country & state:" + locationName4); //does not fire
return deferred.promise;
};
});
Этот код делает выбор тегов активным - нажав на стрелку вниз открывает выпадающий список, который может быть выбран. Исходный тег select пуст, а countrySelected не установлен ни на что. Жестко закодированный объект, locationName4 должен установить один из выбранных в Соединенные Штаты, а другой - в Нью-Йорк, если функции обслуживания и контроллера были правильными. Код ng-options принимает код страны и использует его для отображения текста для названия страны.
ваша функция initialCountry ничего не делает - она не изменяет никаких переменных и не имеет никакого оператора возврата. –
Попробуйте добавить 'track by country.code' (или' track by state.code') в 'data-ng-options' , – HankScorpio
@PetrAveryanov, Да, он не устанавливает начальную переменную - вот в чем проблема. У него есть оператор возврата - посмотрите еще раз. Что делать, чтобы эти компоненты работали? –