пользовательские маркеры листовок angular (с использованием угловых директив)

Я пытаюсь создать «маркер листовки», используя угловую директиву. В целях дизайна мы разделяем презентацию и модель, чтобы разные люди могли работать над разными частями приложения. Моя проблема, скорее всего, больше связана с проблемой «сферы применения», чем с проблемой «листовки». Я пытаюсь передать объект для использования в директиве angular, добавляя маркеры в «$scope» в контроллере. Эта директива «» в моем приложении является единственным тегом в моем свойстве «сообщение» для каждого объекта-маркера, который будет представлен на карте. У него есть атрибут «estacao», что на португальском означает «станция».

Итак, мой код здесь:

        angular.forEach($scope.estacoes, function(estacao) {
            $scope.markers.push({
                lat: estacao.latitude, 
                lng: estacao.longitude, 
                message: "<popup estacao='estacoes[" + i + "]'></popup>"
            });
            i++;
        });

http://plnkr.co/edit/evaQpqGZUz39Y7MNqbo7?p=preview

Проблема заключается в том, что мой "estacao" равен нулю при обработке директивы.

Может ли кто-нибудь помочь мне понять, что происходит?


person Alex Gouvêa Vasconcelos    schedule 16.12.2014    source источник


Ответы (2)


«Автоматическая» компиляция всплывающего сообщения (из директивы листовки) использует корневую область. Итак, вам нужно назначить свои ответные эстако в корневую область:

promiseEstacoes.then(function(estacoes) {
   $rootScope.estacoes = estacoes.estacoes;
   ...
}

http://plnkr.co/edit/OkQcth2zNrEdO2rgwBv8?p=preview

person Rob    schedule 18.12.2014
comment
Спасибо, Роб... Это сработало... но я не думаю, что действительно понял, что произошло? Но я немного изучу эти разные сферы. И еще раз, спасибо, что нашли время, чтобы помочь мне. - person Alex Gouvêa Vasconcelos; 21.12.2014
comment
Взгляните на метод manageOpenPopup() в коде markersHelper, там вы увидите вызов компиляции (с $rootScope)... - person Rob; 21.12.2014

В последних версиях angular-leaflet-directive вы можете указать область для использования при рендеринге сообщений:

$scope.markers.push({
    lat: estacao.latitude, 
    lng: estacao.longitude,
    getMessageScope: function() { return $scope; }
    message: "<popup estacao='estacoes[" + i + "]'></popup>"
});
person David    schedule 14.01.2015
comment
Великий Дэвид... это решение тоже работает... спасибо, что не торопитесь, чтобы помочь мне. - person Alex Gouvêa Vasconcelos; 14.01.2015