ng-hide / ng-show 中是不是可以使用复杂的表达式?

Posted

技术标签:

【中文标题】ng-hide / ng-show 中是不是可以使用复杂的表达式?【英文标题】:Are complex expressions possible in ng-hide / ng-show?ng-hide / ng-show 中是否可以使用复杂的表达式? 【发布时间】:2013-02-16 10:52:26 【问题描述】:

我想这样做:

ng-hide="!globals.isAdmin && mapping.is_default"

但表达式的计算结果始终为 false

我不想在$scope 上定义特殊功能。

【问题讨论】:

这种语法对我有用,而且我经常使用它。如果它评估为false,您可能需要仔细检查这些值。 “全局”和/或“映射”对象可能是 undefined 在答案下方阅读我的评论。 只是一个提示——如果你使用控制器方法,你实际上可以在调试器中逐步完成评估! 【参考方案1】:

上面的一些答案对我不起作用,但确实如此。以防万一其他人有同样的问题。

ng-show="column != 'vendorid' && column !='billingMonth'"

【讨论】:

【参考方案2】:

我通常会尽量避免使用 ng-show 和 ng-hide 的表达式,因为它们被设计为布尔值,而不是条件。如果我需要条件逻辑和布尔逻辑,我更喜欢使用 ng-if 作为第一个检查放入条件逻辑,然后使用 ng-show 和 ng-hide 添加对布尔逻辑的额外检查

但是,如果您想对 ng-show 或 ng-hide 使用条件,这里有一些示例的链接:Conditional Display using ng-if, ng-show, ng-hide, ng-include, ng-switch

【讨论】:

【参考方案3】:

如果您没有太多表达式,这将起作用。

示例:ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

对于比这更多的表达式,请使用控制器。

【讨论】:

我不认为你的说法是正确的:This will work if you do not have too many expressions. 虽然我同意它应该在控制器中完成。【参考方案4】:

如果您需要运行任意 javascript 代码,请使用控制器方法,或者您可以定义一个返回 true 或 false 的过滤器。

我刚刚测试过(应该先测试一下),像 ng-show="!a && b" 这样的东西按预期工作。

【讨论】:

你是对的。问题是 isAdmin 标志的类型是“字符串”而不是“布尔”。【参考方案5】:

ng-show / ng-hide 仅接受 boolean 值。

对于复杂的表达式,最好使用控制器和范围来避免复杂化。

下面一个就可以了(不是很复杂的表达方式)

ng-show="User=='admin' || User=='teacher'"

当两个条件中的任何一个返回真(或运算)时,这里的元素将显示在 UI 中。

这样你可以使用任何表达式。

【讨论】:

以上是关于ng-hide / ng-show 中是不是可以使用复杂的表达式?的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS - 可以 ng-show/ng-hide 模式窗口吗?

AngularJS:ng-show / ng-hide 不适用于` `插值

练习ng-show和ng-hide的方法

ng-show 和 ng-hide 在 Ionic 中很慢。两个元素可见几毫秒(仅在 iOS 中)

ng-if / ng-show/ng-hide ng-swith

ngAnimate CSS 动画不适用于 ng-show 和 ng-hide