具有 3 个条件的 ng-if 不起作用? angularjs
a ng-if with 3 condition doesn't work? angularjs
我试图在同一个 ng-if 中设置 3 个条件,但我的应用停止了滚动....
我在 2 div 中分离了 3 个条件,首先是 2 个条件 div,在第二个 div 中分离了 1 个条件,现在它起作用了……但我不明白为什么……
params.schedule值为undefined-undefined-
<div class="inputs-row" ng-if="params.schedule.length > 0 && params.schedule != undefined">
<div ng-if="params.schedule != 'undefined-undefined-'">
<div class="inputCol">
{{'ScheduleDate' | translate}}
</div>
<div class="inputCol">
{{params.schedule}}
</div>
</div>
</div>
谁能证实或解释一下?
你的条件看起来不对。
params.schedule.length > 0 && params.schedule != undefined
让我们来看看吧。
如果params.schedule.length
大于0,则肯定不能undefined
。
使用 &&
,按此顺序,条件没有意义,如果 params.schedule
未定义,则容易出错,因为将长度 属性 作为第一个条件(无法访问未定义的长度 属性)。
我想你是在检查 params.schedule
是否是一个数组。
在 js 中有一种更干净、更简单的方法:Array.isArray
方法。
将您的 ng-if 更改为:
ng-if="Array.isArray(params.schedule) && params.schedule.length" // that already checks if it's greater than 0 because if (0) === false
您需要更改逻辑顺序,以便最有可能失败的事情排在第一位。您还可以使用隐式 "truthiness" 来简化此逻辑
ng-if="params.schedule && params.schedule.length && params.schedule != 'undefined-undefined-'"
如果 params.schedule
为假(未定义),它就停在那里。一切顺利。
如果您先检查 params.schedule.length
而 params.schedule
未定义,则会出错,因为您正在检查未定义的 属性。
如果 if(params.schedule.length > 0)
与 if(params.schedule.length)
相同,因为任何非零长度 = true。
这是一本关于使用真实性的入门读物:https://codeburst.io/javascript-null-vs-undefined-20f955215a2
我试图在同一个 ng-if 中设置 3 个条件,但我的应用停止了滚动.... 我在 2 div 中分离了 3 个条件,首先是 2 个条件 div,在第二个 div 中分离了 1 个条件,现在它起作用了……但我不明白为什么……
params.schedule值为undefined-undefined-
<div class="inputs-row" ng-if="params.schedule.length > 0 && params.schedule != undefined">
<div ng-if="params.schedule != 'undefined-undefined-'">
<div class="inputCol">
{{'ScheduleDate' | translate}}
</div>
<div class="inputCol">
{{params.schedule}}
</div>
</div>
</div>
谁能证实或解释一下?
你的条件看起来不对。
params.schedule.length > 0 && params.schedule != undefined
让我们来看看吧。
如果params.schedule.length
大于0,则肯定不能undefined
。
使用 &&
,按此顺序,条件没有意义,如果 params.schedule
未定义,则容易出错,因为将长度 属性 作为第一个条件(无法访问未定义的长度 属性)。
我想你是在检查 params.schedule
是否是一个数组。
在 js 中有一种更干净、更简单的方法:Array.isArray
方法。
将您的 ng-if 更改为:
ng-if="Array.isArray(params.schedule) && params.schedule.length" // that already checks if it's greater than 0 because if (0) === false
您需要更改逻辑顺序,以便最有可能失败的事情排在第一位。您还可以使用隐式 "truthiness" 来简化此逻辑
ng-if="params.schedule && params.schedule.length && params.schedule != 'undefined-undefined-'"
如果 params.schedule
为假(未定义),它就停在那里。一切顺利。
如果您先检查 params.schedule.length
而 params.schedule
未定义,则会出错,因为您正在检查未定义的 属性。
如果 if(params.schedule.length > 0)
与 if(params.schedule.length)
相同,因为任何非零长度 = true。
这是一本关于使用真实性的入门读物:https://codeburst.io/javascript-null-vs-undefined-20f955215a2