可能有Angular ng-if有多个条件,有些绑定一次,有些是双向的吗?

时间:2016-02-19 21:02:09

标签: angularjs angular-ng-if bindonce

我的问题不在于您是否可以在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() } 语句。

1 个答案:

答案 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表达式:

enter image description here

<强>更新

所以看起来好像原始问题更倾向于将两(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>