Нг-если вызывать нг-шоу?

У меня есть 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 не происходит до тех пор, пока оно не будет инициализировано.

Другие вопросы по тегам