我的问题不在于您是否可以在ng-if
中使用多个条件,而是在ng-if
只能绑定一些条件的情况下是否可以使用<span ng-if="::page.name === 'something' && page.viewEnabled">Correct page, and the view is enabled!</span>
,而其他条件则是更新?
举个简单的例子,如果我想绑定一次名称,但是我想要监视更新的切换状态属性:page.viewEnabled
我希望切换到::page.name
假设它是一个布尔值,会导致跨度消失。情况似乎并非如此(使用Angular 1.3.11)。
ng-if
上的一次性绑定是否将整个表达式设置为绑定一次?
提前致谢!
编辑:我感到好奇的是,如果你在同一个ng-if
中有多个条件,一个被绑定一次,而另一个则不然。我所看到的是,如果你有一个绑定一次,另一个更改不会影响override func drawRect(rect: CGRect) {
let haloRectFrame = CGRectMake(
lineWidth / 2,
lineWidth / 2,
rect.width - lineWidth,
rect.height - lineWidth)
let haloPath = UIBezierPath(ovalInRect: haloRectFrame)
haloPath.lineWidth = lineWidth
color.set()
haloPath.stroke()
}
语句。
答案 0 :(得分:2)
我刚刚对此进行了测试,并且可以确认您实际上bind-once
可以ngIf
声明。请考虑以下示例:
https://plnkr.co/edit/m32BBBYlNffxTfggb33g?p=preview
假设您的UI以编程方式更新fruits
数组,并且假设我们有两个ngIf
表达式:一个使用bind-once
,另一个正常绑定(即两次):
<div ng-if="::fruits.length > 3">More than three fruits!</div>
<div ng-if="fruits.length > 3">More than three fruits!</div>
如果我们开始添加到这个数组,我们会注意到满足条件时只触发第二个ngIf
表达式:
<强>更新强>
所以看起来好像原始问题更倾向于将两(2)个表达式放在ngIf
中,但其中一个表达式使用bind-once
。有趣的是,这两个语句都没有触发(见下文),这有点令人惊讶,这似乎表明你不能组合单向和双向绑定表达式。在第一个ngIf
中,我原本期望第一个条件被真实地评估,然后短路,因为它不需要评估第二个表达式,它恰好被绑定一次。但事实似乎并非如此。
Plunkr已更新。
<div ng-if="fruits.length > 3 || ::fruits.length > 3">1.) More than three fruits!</div>
<div ng-if="::fruits.length > 3 || fruits.length > 3">2.) More than three fruits!</div>