0

我的问题不是您是否可以在 中使用多个条件ng-if,而是是否可以ng-if只绑定一些条件一次,而其他条件则关注更新?

举个简单的例子,如果我想绑定一次名称,但有一个切换状态属性,我想观察更新:<span ng-if="::page.name === 'something' && page.viewEnabled">Correct page, and the view is enabled!</span>

我希望切换到page.viewEnabled假设它是布尔值会导致跨度消失。情况似乎并非如此(使用 Angular 1.3.11)。

一次性绑定是否::page.name将整个表达式设置为绑定一次?

提前致谢!

编辑:我很好奇的是,如果你在同一个中有多个条件ng-if,一个被绑定一次,而另一个没有。我看到的是,如果你有一个绑定一次,另一个更改不会影响ng-if语句。

4

1 回答 1

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>
于 2016-02-19T21:20:19.227 回答