Burada bu sorunun pek çok cevabı var ama görünüşe göre burada gerçekte neler olup bittiğine dair biraz kafa karışıklığı var.
İlk olarak, öncülünüz
"href, Angular.js'de ng-tıklamayı geçersiz kılar"
Hata. Gerçekte olan şey, tıklamanızdan sonra, tıklama olayının ilk olarak açısal ( ng-click
açısal 1.x ve click
açısal 2.x + yönerge ile tanımlanmıştır) tarafından ele alınması ve daha sonra yayılmaya devam etmesidir (bu da sonunda tarayıcıyı, ile tanımlanmış url href
özniteliği). (bakınız bu ) javaScript olay yetiştiriciliği daha fazla
Bundan kaçınmak istiyorsanız, Olay arayüzünün preventDefault()
yöntemini kullanarak olay yayılımını iptal etmelisiniz :
<a href="#" ng-click="$event.preventDefault();logout()" />
(Bu saf javascript işlevselliğidir ve açısal ile ilgisi yoktur)
Şimdi, bu zaten sorununuzu çözecektir, ancak bu optimal çözüm değildir. Açısal, haklı olarak, MVC modelini destekler . Bu çözüm ile html şablonunuz javascript mantığıyla karıştırılır. Bundan mümkün olduğunca kaçınmaya çalışmalı ve mantığınızı açısal denetleyicinize yerleştirmelisiniz. Yani daha iyi bir yol
<a href="#" ng-click="logout($event)" />
Ve logout () yönteminizde:
logout($event) {
$event.preventDefault();
...
}
Artık tıklama olayı tarayıcıya ulaşmayacağı için işaret ettiği bağlantıyı yüklemeye çalışmayacaktır href
. (Bununla birlikte, kullanıcı bağlantıyı sağ tıklar ve doğrudan bağlantıyı açarsa, o zaman bir tıklama etkinliği olmayacağını unutmayın. Bunun yerine, tarafından gösterilen URL'yi doğrudan yükleyecektir.href
özniteliğin .)
Tarayıcılarda ziyaret edilen bağlantı rengi hakkındaki yorumlarla ilgili olarak. Yine bunun açısal ile ilgisi yoktur href="..."
, tarayıcınız tarafından ziyaret edilen bir url'ye işaret ederseniz, varsayılan olarak bağlantı rengi farklı olacaktır. Bu, CSS: ziyaret Seçici tarafından kontrol edilir , bu davranışı geçersiz kılmak için css'nizi değiştirebilirsiniz:
a {
color:pink;
}
PS1 :
Bazı cevaplar şunları kullanmanızı önerir:
<a href .../>
href
açısal bir yönergedir. Şablonunuz açısal olarak işlendiğinde bu,
<a href="" .../>
Bu iki yol esasen aynıdır.