У меня есть ng-if
и если он оценивает TRUE, я хочу, чтобы он вызывал 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, чтобы вызвать конкретное условие, такое как ng-if="item.type === 'pizza'"
- тогда он должен вызвать ng-show = "someMethod()", который будет фильтровать доступные выпадающие списки на странице и т.д.
ng-if
не отображает этот элемент, если условие принимает значение false
Однако вы можете использовать несколько условий в одном выражении:
ng-show="item.type == 'pizza' && someMethod()"
Обычно лучше не помещать вызовы функций в такие условные выражения, хотя
someMethod()
здесь будет вызываться только для пиццы. Это называется «оценка короткого замыкания». Почему вы хотите отображать выпадающие списки, а не показывать их? Почему бы просто не сделать их?
ng-show
оценивает выражение - просто поместите свое выражение в ng-show ="myexpression || myfunction()"
.
Если ваш элемент или выражение не инициализированы, вы должны использовать ng-if, чтобы убедиться, что этот элемент существует только после чтения выражения. Посмотрите на это: Инициализируйте дорогой элемент с помощью ng-if, затем show/hide с 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 не произойдет, пока не будет инициализировано.
ng-if
оценивает false ... элемент даже не существует