SORU
11 Temmuz 2013, PERŞEMBE


AngularJS : izole kapsamında olmayan bir yönerge gelen Denetleyici bir İşlev Çağrısı

Yapamam izole kapsam kullanmadan bir yönerge içinde üst kapsamı üzerinde bir işlevi çağırmak için bir yol bulamıyorum. Eğer izole kapsam kullanırsam sadece " izole gerekli değilken ana kapsamı işlevine erişmek için, ama izole kapsamı kullanarak sonuçları vardır. & kullanabilirim biliyorum Düşünün aşağıdaki html:

<button ng-hide="hideButton()" confirm="Are you sure?" confirm-action="doIt()">Do It</button>

Onlar "Tamam" a tıklayın iletişim onaylayın. eğer basit bu örnek, iletişim onaylayın ve doİt çağrı sadece bir javascript göstermek istiyorum() Bu basit münferit bir kapsam kullanıyor. Direktif bu gibi 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();
                }
            });
        }
    };
})

Ama sorunu izole kapsam, ng-hide artık üst kapsam karşı yürütür yukarıdaki örnekte kullanıyorum çünküama izole kapsamında yerine herhangi bir Direktif üzerinde izole bir kapsam kullanarak bu özellik direktifleri izole kapsamında kullanmasına neden olur). Ng-hide çalışmıyor nerede Here is a jsFiddle örnek yukarıda. (Bu keman Not Bu düğme ne zaman sana "Evet" giriş kutusuna). tip gizlememeli

Alternatif olacaktırDEĞİL izole bir kapsam kullanıngerek yok bu yana , aslında burada gerçekten istediğim şey bu direktifin izole. kapsam için Tek sorun,nasıl eğer üzerinde izole kapsamında geçişte bilmiyorum ama üst kapsamı üzerinde bir yöntemi çağırmak? Here is a jsfiddle * * * * DEĞİLİM malar kapsam ve ng-hide iyi çalışıyor, ama, elbette, çağrı confirmAction() çalışmıyor ve ben bilmem nasıl bir iş.

Lütfen dikkat, gerçekten aradığım cevabı izole bir kapsam kullanmadan dış kapsamına işlevleri çağırmak için nasıl.Ve ben ilgilenmiyorum yapma bunu doğrulamak iletişim iş başka bir yol, çünkü bu soru için Şekil dışarı nasıl yapmak aramalar için dış kapsam ve hala edinir diğer direktifler işe karşı üst kapsam.

Alternatif olarak, eğer diğer direktifler hala üst kapsam karşı çalışacaktır eğer yalıtılmış bir kapsam kullanan çözümler duymak ilgi duyarımbunun mümkün olduğunu sanmıyorum ama.

CEVAP
11 Temmuz 2013, PERŞEMBE


Beri bu özelliğin çalışması için tek bir arama fonksiyonu (ve yok etmeye ayarlanmış bir değer bir özellik) kullanabilirsiniz $eval $yerine ayrıştırılamadı (non-izole kapsam):

scope.$apply(function() { 
    scope.$eval(attrs.confirmAction); 
});

veya daha iyisi, sadece $eval $apply kullanın()kapsamında karşı argüman uate:

scope.$apply(attrs.confirmAction); 

fiddle

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • Peyton

    Peyton

    28 Aralık 2008