Я создал directive
для ленивых загружаемых google maps
с angularjs
:
http://plnkr.co/edit/1NpquJ?p=preview
Снято с: AngularJS - загружает скрипт google map async в директиве для нескольких карт
Вопрос: Как я могу динамически связывать значения lat/long
с контроллером, так что каждый раз, когда значения в контроллере меняются, карта также меняет вид? (например, бэкэнд-вызов обслуживает новые значения lat/long, которые затем должны быть перенесены в элемент карты).
Я добавил в директиву карты:
scope: {
lat: '=',
long: '='
}
И привяжите его двумя способами:
<div lat="{{lat}}" long="{{long}}" />
контроллер:
$http..getBackendData()
.then(function(data) {
$scope.lat = data.lat;
$scope.long = data.long;
}
);
...
В любом случае карта отображается только с начальным значением, но никогда не обновляется. Пример: http://plnkr.co/edit/U31poBpHTfFVQsipLrI4?p=preview
На данный момент он добавляет $watch
на latitude
:
http://plnkr.co/edit/eS18B0Te2l5qaf6wvQIH?p=preview
scope.$watch('lat', function (newVal) {
initializeMap();
});
Но я не знаю, правильно ли это. Не стесняйтесь комментировать, если у вас есть лучшие решения.