Нг-если вызывать нг-шоу?
У меня есть ng-if
и если он оценивается как ИСТИНА, я хочу, чтобы он вызвал ng-show="someMethod()"
Что бы вы сказали, это лучший способ сделать это?
Должен ли я позвонить мой ng-if
затем используйте ng-init="someMethod()"
а затем в someMethod() как-то применить макет ng-show
?
HTML:
<div ng-repeat="(key,item) in foodOptions" ng-class={hidden : item.type != currentSection.type}" >
Затем я хочу вызвать нг-если вызвать конкретное условие, как ng-if="item.type === 'pizza'"
- тогда он должен вызвать ng-show="someMethod()", который отфильтрует доступные выпадающие списки на странице и т. д.
2 ответа
ng-if
не отображает этот элемент, если условие оценивается как ложное
Однако вы можете использовать несколько условий в одном выражении:
ng-show="item.type == 'pizza' && someMethod()"
Обычно лучше не помещать вызовы функций в такие условия, хотя
ng-show
оценивает выражение уже - просто поместите ваше выражение в ng-show ="myexpression || myfunction()"
,
Если ваш элемент или выражение не инициализирован, то вы должны использовать ng-if, чтобы убедиться, что этот элемент существует только после чтения выражения. Посмотрите на это: Инициализируйте дорогой элемент с помощью ng-if, затем покажите / спрячьте с помощью ng-show / hide.
<button ng-click='showElement = !showElement; elementInitialized = true'></button>
<div id='myExpensiveElement' ng-if='elementInitialized' ng-show='showElement'>
...
</div>
Как видите, ng-show может следовать непосредственно за ng-if, а если false, то ng-show не происходит до тех пор, пока оно не будет инициализировано.