angular: anchor link не работает на android, если его контейнер имеет ng-click


У меня есть приложение PhoneGap, которое использует Angular.

В приложении я показываю некоторый контент, который при нажатии должен перейти на другую страницу. Однако, если ссылки в этом содержимом нажаты, они должны привести пользователя к их целевому объекту, а не к целевому объекту по умолчанию.

Тем не менее, я заметил, что если оболочка содержимого имеет ng-click, щелчок по ссылкам не приведет пользователя к этой ссылке. Он отлично работает на Chrome на моем компьютере, но не на моем Android. Это происходит, даже если ng-click атрибут пуст, но не в том случае, если он опущен.

HTML, который я использовал для его воссоздания:

<div ng-click="">
    some content
    <a href="http://www.google.com">google</a>
    other content
</div>

Как я уже сказал, на моем ПК это работает нормально, и при нажатии на ссылку браузер переходит к google.com, но на моем телефоне Android, когда я помещаю вышеупомянутый HTML в мое приложение PhoneGap, ничего не происходит, когда я нажимаю ссылку. Если я удаляю атрибут ng-click из содержащего div, то ссылка работает нормально на телефоне.

Есть идеи, почему это происходит, или, что более важно, как это можно исправить?
1 3

1 ответ:

Вот чистый обходной путь, который я нашел для этой проблемы. В начале кода ng-click оболочки я добавил следующие строки:

if($event && $event.target && $event.target.href) {
    $event.target.click();
    $event.preventDefault();
    $event.stopPropagation();
    return;
}

В атрибуте ng-click, когда вызывается этот код, я передаю $event в качестве аргумента.

Кроме того, я не уверен, что $event.preventDefault(); и $event.stopPropagation(); действительно нужны. Он хорошо работал на моем Андроиде даже без них, но я добавил их для дополнительной безопасности.