Dlaczego ng-hide nie działa z niestandardowymi dyrektywami?
Czytam sekcję dyrektyw przewodnika programistów na angularjs.org, aby odświeżyć moją wiedzę i zdobyć pewne spostrzeżenia, a ja próbowałem uruchomić jeden z przykładów, ale dyrektywa ng-hide nie działa na dyrektywy niestandardowej.
Oto jsfiddle:http://jsfiddle.net/D3Nsk/:
<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog()">
Does Not Work Here!!!
</my-dialog>
<div ng-hide="dialogIsHidden">
It works Here.
</div>
Masz jakiś pomysł, dlaczego tak się dzieje?
Rozwiązanie
Wydaje się, że zmienna dialogIsHidden na znaczniku już odwołuje się do zmiennej zasięgu wewnątrz dyrektywy, a nie do zmiennej w kontrolerze; biorąc pod uwagę, że dyrektywa ma swój własny izolowany zakres, aby ta praca musiała przejść przez odwołanie się do zmiennej dialogIsHidden kontrolera do dyrektywy.
Oto jsfiddle:http://jsfiddle.net/h7xvA/
zmiany w:
<my-dialog
ng-hide="dialogIsHidden"
on-close="hideDialog()" dialog-is-hidden='dialogIsHidden'>
i:
scope: {
'close': '&onClose',
'dialogIsHidden': '='
},