在未定义的值上使用ng-show!导致ng-show由truthy

时间:2014-10-06 23:03:19

标签: angularjs

我尝试仅在<p>时隐藏/显示model.Order.Enabled === false,但如果我在下方使用ng-show,那么model.Order.Enabled将为null直到API返回truefalse。然后,由于我的ng-show使用了!model.Order.Enabled,它评估为!null哪个Angular视为真实,因此<p>在DOM中显示,即使它可能不应该是(如果API返回并告诉我model.Order.Enabled == true

<p ng-show="!model.Order.Enabled" style="color:#2660C6">Here is some text to show only when model.Order.Enabled === false</p>

这导致我的<p>在API仍在等待响应时显示约2秒,之后它就会消失。这只是我必须在这个场景发生的任何地方ng-show内添加更多逻辑的情况(这很多)?

1 个答案:

答案 0 :(得分:0)

要完全隐藏/显示DOM中的元素,请使用ngIf,如下所示:

// let's suppose we're checking against foo.dataLoaded


<p ng-if="foo.dataLoaded">Element is displayed if truthy</p>
<p ng-if="!foo.dataLoaded">Element is displayed if falsey</p>

要处理范围属性的正确布尔值,您应该在获取数据时使用promise。例如,您可以从$ scope.foo.dataLoaded = false开始;然后在promise函数中将其设置为true