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

  • Atlantic Records

    Atlantic Rec

    15 Aralık 2006
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • The Computer Chronicles

    The Computer

    7 Kasım 2012