Здесь так много ответов на этот вопрос, но кажется, что есть немного путаницы в том, что на самом деле происходит здесь.
Во-первых, ваша предпосылка
«href переопределяет ng-click в Angular.js»
blockquote>неверен. На самом деле происходит то, что после щелчка событие щелчка сначала обрабатывается угловым (определяется директивой
ng-click
в угловых 1.x иclick
в угловом 2.x +), а затем продолжает размножаться (что в конечном итоге вызывает браузер, чтобы перейти к URL-адресу, определенному атрибутомhref
). (См. этот для получения дополнительной информации о распространении события в javascript)Если вы хотите этого избежать, отмените распространение события с помощью . Метод
preventDefault()
интерфейса события :
(Это чистая функциональность javascript и не имеет ничего общего с угловым)
Теперь это уже решит вашу проблему, но это не оптимальное решение. Угловая, по праву, продвигает шаблон MVC . С помощью этого решения ваш шаблон html смешивается с логикой javascript. Вы должны стараться избегать этого как можно больше и поместить свою логику в свой угловой контроллер. Таким образом, лучший способ -
И в вашем методе logout ():
logout($event) { $event.preventDefault(); ... }
Теперь событие клика не дойдет до браузера, поэтому оно не будет пытаться загрузите ссылку, указанную
href
. (Однако обратите внимание, что если пользователь щелкнет правой кнопкой мыши по ссылке и сразу откроет ссылку, тогда вообще не будет события щелчка, а будет напрямую загружать URL, указанный атрибутомhref
.)Относительно комментариев о посещенных цветах ссылок в браузерах. Опять же, это не имеет никакого отношения к угловому, если ваш
href="..."
указывает на посещаемый URL вашего браузера по умолчанию, цвет ссылок будет другим. Это контролируется CSS: посещенный Selector , вы можете изменить свой css, чтобы отменить это поведение:a { color:pink; }
PS1:
Некоторые ответы предлагают использовать :
href
является угловой директивой. Когда ваш шаблон обрабатывается угловым, он будет преобразован в
. Эти два способа по существу одинаковы.
Вы можете использовать IPAddr
require 'ipaddr'
ipv4 = IPAddr.new(rand(2**32),Socket::AF_INET)
ipv6 = IPAddr.new(rand(2**128),Socket::AF_INET6)
Я использовал это раньше для генерации случайного ip, затем проверял его с помощью Resolv
ip = "#{rand(99)}.#{rand(100)}.#{rand(10)}.#{rand(255)}"
begin
if ip
host = Resolv.new.getname(ip)
puts "#{c} #{real_ip.length} #{ip} #{host}"
end
rescue Exception => e
puts "FAKE #{ip}"
end
Если вам нужен действительно случайный IP-адрес, Array.new (4) {rand (256)}. Join ('.')
делает это
ip = "%d.%d.%d.%d" % [rand(256), rand(256), rand(256), rand(256)]