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 在 Ionic 中很慢。两个元素可见几毫秒(仅在 iOS 中)