9

ng-yineleme bittiğinde bildirilmek üzere son özellik yakalamaya çalışıyorum. Bunun için özel bir direktif oluşturdum (ngRepeatDoneNotification). Ng-tekrarı başka bir eleman direktifine uygulanır (ünite).

<unit ng-repeat="unit in collection" ng-repeat-done-notification id="{{unit.id}}"></unit> 

Ben izole edilmesi için kapsamı ayarladıktan sonra

$, geçen zaman notifier yönergede kayboldu: Yani, üç direktifleri bir inşaat var. Mümkünse bu yakalamak için nasıl

App.directive('ngRepeatDoneNotification', function() { 
    return function(scope, element, attrs) { 
    if (scope.$last){ // ISSUE IS HERE 
     window.alert("im the last!"); 
    } 
    }; 
}); 

App.directive('unit', function() { 
    return { 
    restrict: 'E', 
    replace: true, 
    scope: {id: '@'}, // ONCE I ISOLATE SCOPE, $last DISAPPEARED 
    templateUrl: '/partials/unit.html', 
    link: function(scope, element) {} 
    } 
}); 

Ben jsFiddle http://jsfiddle.net/4erLA/1/

oluşturmak ettik? izole kapsamı Bunu senaryo ya da sadece ikisi için çalışmasını sağlamak için refactor olabilir bu

if (scope.$parent.$last) { 
    $rootScope[attrs.ngRepeatDoneNotification] = "$last has been catched" 
} 

gibi ana kapsamı başvurmak için $parent kullanmak gerekir, $last yakalamak yapabilmek için

+0

Bunun gibi bir dinamik 'id' özniteliğine sahip olabileceğinizi düşünmüyorum. – finishingmove

cevap

11

basitçe kopyala.

+0

teşekkürler, herhangi bir durumda ngRepeatDoneNotification işlerini yapabilmek için mevcut kapsamı izole etmenin bir yolu var mı? Kapsamı buldum. $$ isolateBindings, ancak yalnızca boş olmayan karma ile tanımlanan durum kapsamına yardımcı olur. – acidron

+0

@acidron Bu güzel bir soru. Bilmiyorum ama "kapsam. $ Parent. $ Parent" değerinin sıfır olup olmadığını kontrol etmeyi deneyebilirsiniz, eğer boşsa, o zaman başka bir düzeyde olması gerekmiyorsa doğrudan denetleyicinin kapsamı içinde olmalıdır. kapsamı. – zsong

İlgili konular