Я использую Angular.JS и Leaflet.JS для карты в моем местоположении, у которой есть маркеры карт со связанными с ними всплывающими окнами. Мне нужно использовать диапазон с двумя разными значками (один из приведенных ниже в коде), которые вы можете щелкнуть, чтобы вызвать разные функции, и с ng-классом, чтобы изменить класс, если выполняются определенные условия. Это мой код:
var marker = L.marker([51.5, -0.09], {icon: blueIcon}).bindPopup('<br><span ng-class="thumbsUpClass(' + hotelsSelectedDates[i]['hotels'][s] + ')" ng-click="addChoice(' + hotelsSelectedDates[i]['hotels'][s] + ',' + hotels + ')"><span class="popup-container"><span class="icon-stack thumbs-up-stack"><i class="icon-sign-blank icon-stack-base"></i><i class="icon-thumbs-up"></i></span></span></span>');
Однако, когда я проверяю элемент, я получаю следующее:
<span ng-class="thumbsUpClass([object Object])" ng-click="addChoice([object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object])"><span class="popup-container"><span class="icon-stack thumbs-up-stack"><i class="icon-sign-blank icon-stack-base"></i><i class="icon-thumbs-up"></i></span></span></span>
ng-click должен отправить эту функцию как конкретному объекту, так и массиву объектов, но когда я нажимаю значок, ничего не происходит. В своем исследовании я обнаружил, что всплывающее окно предотвращает распространение событий (больше информации, но я не уверен, как его переопределить или исправить, чтобы работайте с Angular. У кого-нибудь есть идея, как это сделать?
UPDATE:
Так как ng-click/class оценивает строку, я фиксировал переменные следующим образом:
$scope.item = hotelsSelectedDates[i]['hotels'][s]
$scope.set = hotels
var marker = L.marker([51.5, -0.09], {icon: blueIcon}).bindPopup('<br><span ng-class="thumbsUpClass(item)" ng-click="addChoice(item,set)"><span class="popup-container"><span class="icon-stack thumbs-up-stack"><i class="icon-sign-blank icon-stack-base"></i><i class="icon-thumbs-up"></i></span></span></span>');
Затем html выходит правильно:
<span ng-class="thumbsUpClass(item)" ng-click="addChoice(item,set)"><span class="popup-container"><span class="icon-stack thumbs-up-stack"><i class="icon-sign-blank icon-stack-base"></i><i class="icon-thumbs-up"></i></span></span></span>
Однако, когда я нажимаю значок, ничего не происходит, и он не выглядит так, как вызываются функции. Кто-нибудь знает, почему это произойдет?