İzole kapsam kullanmadan bir yönergenin içinden üst kapsamdaki bir işlevi çağırmanın bir yolunu bulamıyorum. Yalıtılmış kapsam kullanırsam, üst kapsamdaki işleve erişmek için yalıtılmış olarak "&" kullanabileceğimi, ancak gerekli olmadığında yalıtılmış kapsam kullanmanın sonuçları olacağını biliyorum. Aşağıdaki HTML'yi düşünün:
<button ng-hide="hideButton()" confirm="Are you sure?" confirm-action="doIt()">Do It</button>
Bu basit örnekte, bir JavaScript onay iletişim kutusu göstermek ve doIt () 'i yalnızca onay iletişim kutusunda "Tamam" ı tıklarlarsa çağırmak istiyorum. Bu, yalıtılmış bir kapsam kullanarak basittir. Yönerge şöyle görünecektir:
.directive('confirm', function () {
return {
restrict: 'A',
scope: {
confirm: '@',
confirmAction: '&'
},
link: function (scope, element, attrs) {
element.bind('click', function (e) {
if (confirm(scope.confirm)) {
scope.confirmAction();
}
});
}
};
})
Ancak sorun şu ki, ben izole kapsam kullandığım için, yukarıdaki örnekte ng-hide artık üst kapsama karşı değil, izole kapsamda (çünkü herhangi bir direktifte izole edilmiş bir kapsam kullanmak o elemandaki tüm direktiflerin izole kapsamı kullanın). İşte ng- hide'nin çalışmadığı yukarıdaki örnekten bir jsFiddle . (Bu kemanta, giriş kutusuna "evet" yazdığınızda düğmenin gizlenmesi gerektiğini unutmayın.)
Alternatif, yalıtılmış bir kapsam KULLANMAMAK olacaktır , ki bu yönergenin kapsamının izole edilmesine gerek olmadığı için burada gerçekten istediğim şey budur. Sahip olduğum tek sorun , izole kapsama aktarmazsam üst kapsamda bir yöntemi nasıl çağırırım ?
Burada izole kapsamı KULLANMADIĞIM ve ng- hide'nin iyi çalıştığı bir jsfiddle var , ancak, elbette, confirmAction () çağrısı çalışmıyor ve nasıl çalışmasını sağlayacağımı bilmiyorum.
Lütfen dikkat, gerçekten aradığım cevabın, izole bir kapsam KULLANMADAN dış kapsamdaki fonksiyonları nasıl çağıracağım. Ve bu onaylama diyaloğunun başka bir şekilde çalışmasını sağlamakla ilgilenmiyorum, çünkü bu sorunun amacı, dış kapsama nasıl çağrı yapılacağını bulmak ve yine de diğer direktiflerin ana kapsama aykırı çalışmasını sağlamaktır.
Alternatif olarak, diğer direktifler yine de ana kapsama aykırı çalışacaksa, yalıtılmış bir kapsam kullanan çözümleri duymak isterim, ancak bunun mümkün olduğunu düşünmüyorum.