Yönergesinde olay yayılımı ile kendiliğinden geçiş yapmaktan kaçının Tıklama açıp kapatması gereken bir araç ipucu yönergesi ve ayrıca isteğe bağlı tıklamayı kapat. angular-translate
, öğenin içeriğini değiştirmeye izin vermediğinden, bunun yerine yönergenin öğelerini ekleyin.Yönerge
yönergesi (bu basitleştirilmiş bir sürümüdür lütfen unutmayın) biraz şuna benzer:
{
restrict: 'A',
scope: {},
compile: function(element)
{
element.after('<div class="toggle"></div>
<div class="message" ng-show="active"></div>');
},
link: function(scope, element)
{
angular.element(element.siblings('toggle')).click(function()
{
scope.$apply(function()
{
scope.active = !scope.active;
}
});
angular.element(document).click(function()
{
scope.$apply(function()
{
scope.active = false;
}
});
}
}
Sorun şu ki elemana tıklama etkinlik (scope.active = true
) tetiklenir ve sonra yayılır olmasıdır Belge anında kapatılır.
Ancak yayılımı durdurursam, çoğu durumda iyi çalışır, sayfamdaki yönergenin birden fazla örneğine sahip olduğum zamanki bir durum olmaz (birincisi açılır ve ilk açılacak ve diğeri açılmalıdır fakat yayılma olmanın diğer örneğinin document.click
olayı başlatılmıyor durdu
Düzenleme:.This fiddle sorunu gösterir yeşil kutuyu tıklayın ve işe yarıyor tekrar tıklarsanız, eğer. Yeşil kutuyu tıklatırsanız ve arka planı çalışırsa, yeşil kutuyu tıklatırsanız ve diğer yeşil kutu ise her ikisi de açık olur, ancak ilk önce kapatılmalıdır.
event.stopPropagation()
'unumaralı telefondan kaldırırsanız, kutudaki tıklatma ilk olarak tetiklendiğinden, ipucu gösterilir, ancak daha fazla olay yayılmasından sonra arka plan tıklaması da tetiklenir ve anında tekrar kapatılır. Sorunum için daha iyi bir genel çözüm varsa
sevinirim yanı
sorunu yeniden oluşturmak için bir örnek jsfiddle verebilir misiniz? –
Elbette, güncellenmiş soruyu kontrol edin – Aides