我尝试仅在<p>
时隐藏/显示model.Order.Enabled === false
,但如果我在下方使用ng-show
,那么model.Order.Enabled
将为null
直到API返回true
或false
。然后,由于我的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
内添加更多逻辑的情况(这很多)?
答案 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