Czy jest możliwe sprawdzenie, czy dany atrybut jest obecny w dyrektywie, najlepiej przy użyciu zakresu izolowania lub w najgorszym przypadku obiektu atrybutów.Sprawdzanie istnienia atrybutu w dyrektywie kątowej
Za pomocą dyrektywy, która wyglądała mniej więcej tak, <project status></project>
, chcę warunkowo wyrenderować ikonę stanu, ale tylko jeśli obecny jest atrybut statusu.
return {
restrict: 'AE',
scope: {
status: '@'
},
link: function(scope, element, attrs) {
scope.status === 'undefined'
}
}
Najlepiej byłoby, gdyby był on przymocowany bezpośrednio do lunety, aby mógł być użyty w szablonie. Jednak wartość zmiennej powiązanej to undefined. To samo dotyczy połączeń &
tylko do odczytu i =
wiązań dwukierunkowych.
Wiem, że jest to banalnie rozwiązane przez dodanie <project status='true'></project>
, ale w przypadku dyrektyw, których będę często używać, wolałbym nie. (Ważność XHTML, nie jest problemem).
Wiem, że o tym wspomniałeś, ale zastanawiasz się - di Czy spróbujesz czegoś takiego jak "status" w attrs' i zobaczysz, co to jest ocena? – Ian
nie jest "@" jednokierunkowym powiązaniem tekstowym przekazanym do dyrektywy? a więc scope.status powinno być tekstem "true", o ile przekazujesz zmienną do dyrektywy jako
– SoluableNonagonPo określeniu zakresu jako obiektu jak wyżej, dyrektywa tworzy nowy zakres izolatu, który nie dziedziczy właściwości od zakres nadrzędny. Zamiast tego użyj scope: true, aby utworzyć nowy zakres (z dostępem do właściwości zakresu nadrzędnego) lub scope: false, aby dyrektywa używała zakresu nadrzędnego. Czy o to pytasz? Nie znam twojego pytania ... –