ng-if调用ng-show?

时间:2015-10-02 15:32:21

标签: javascript angularjs angularjs-ng-show

我有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 =&#34; someMethod()&#34;这将过滤页面上可用的下拉菜单等。

2 个答案:

答案 0 :(得分:3)

如果条件计算结果为

,则

ng-if不会呈现该元素

但是,您可以在一个表达式中使用多个条件:

ng-show="item.type == 'pizza' && someMethod()"

通常最好不要将函数调用放在这样的条件中

答案 1 :(得分:0)

ng-show已经评估了一个表达式 - 只需将表达式放入ng-show ="myexpression || myfunction()"

如果您的元素或表达式未初始化,那么您应该使用ng-if确保只有在读取表达式后才存在此元素。看看这个:Initialize expensive element with ng-if then show/hide with 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在初始化之前不会发生。