Поскольку вы используете Angular.js, я бы рекомендовал взглянуть на то, как они работают с <a>
, поскольку у них уже есть директива, применяемая ко всем <a>
, чтобы заставить ngHref
работать.Источник мог бы быть здесь: <a>
директива .
Основная идея состоит в том, чтобы поместить логику, которую вы используете для изменения href
, в предупреждение или отобразить модальное или что-либо еще вelement.on('click', function(event) {...})
.
Поскольку Angular.js уже определил директиву <a>
, вам может понадобится поиграться с priority
вашей директивы, чтобыВы не случайно нарушаете путь Angular Fiddles с помощью <a>
.
Директива будет выглядеть примерно так:
// Logic that dictactes whether the URL should show a warning
function isSuspectUrl(l) {
return false;
}
const app = angular
.module("aWarn", [])
.directive("a", function() {
return {
restrict: "E",
compile: function(el, attr) {
element.on("click", function(e) {
if (isSuspectUrl(attr.href)) {
// Logic that would display a warning
}
});
}
}
});