具有 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.lengthparams.schedule 未定义,则会出错,因为您正在检查未定义的 属性。

如果 if(params.schedule.length > 0)if(params.schedule.length) 相同,因为任何非零长度 = true。

这是一本关于使用真实性的入门读物:https://codeburst.io/javascript-null-vs-undefined-20f955215a2