Mam dyrektywę, która buduje menu podręczne, które automatycznie zbiera dane z HTML. W rzeczywistości ma on przekształcać zestaw elementów zgodnych z karuzelą Bootstrap w listę. Łapacz jest to, że każdy .item
przenosi atrybut z jej wartość ciągu sączy jak w:Jak zrobić dyrektywę, używając filtrowanych atrybutów HTML?
HTML:
<div class="item" data-title="{{'My string' | myfilter}}">
...
</div>
Kiedy odwołuje dyrektywy do elementu, przy użyciu tego fragmentu:
.directive('sectionBuilder', function(){
return {
priority:100,
restrict: 'C',
link: function(scope, element, attrs){
var data = [];
$('.carousel-inner > .item', '#carousel').each(function(i, el){
data.push({k: i, v: $(el).attr('data-title')})
});
}
}
})
Dostaję menu nieprzetworzonych, nieprzetworzonych ciągów znaków w języku HTML:
{{'My string' | myfilter}}
{{'My string 2' | myfilter}}
Z tego co rozumiem, attrs. $obserw odnosi się do atrybutów elementu związanego z dyrektywami, ale nie do elementów zewnętrznych.
Jak uzyskać kątowość w celu użycia filtrowanych ciągów znaków? Próbowałem ustawić priorytet na wartości ekstremalne, ale bezskutecznie.
Dzięki, @pankjparkar. Niestety to nie działa dla mnie. Ani '$ (el) .attr ('ng-attr-data-title')})' ani '$ (el) .attr ('data-title')})' wykonaj zadanie. – user776686
czy renderujesz ten element używając 'ng-repeat'? –
Nie. Jest to pojedyncza instancja. Przesunięcia karuzeli, które dostarczają ciągi pozycji menu, są robione w pętli '$ .each'. – user776686