当前位置: 首页 > 知识库问答 >
问题:

用ng-if在角上的一次性绑定?

翟奕
2023-03-14
<div ng-repeat="foo in foos">
  <p ng-if="bar">omg lol</p>
  <p ng-if="!bar">lol omg</p>
</div>

必须这样做真的,真的很愚蠢:

<div ng-repeat="foo in foos" ng-if="bar">
  <p>omg lol</p>
</div>
<div ng-repeat="foo in foos" ng-if="!bar">
  <p>lol omg</p>
</div>

我相信这会给我4美元的观察者...所以我正在寻找一个替代方案来避免像那样愚蠢。

共有1个答案

时恩
2023-03-14

只是延伸我的评论来回答。

Angular 1.3一次性绑定语法(::)确实会删除不必要的监视。只是你需要在设定相关数据后测量手表一段时间。这就是为什么。当您在视图上设置一个一次性绑定属性时,angular将对它设置一个临时监视,直到它获得一个定义的值,即除了undefined之外的任何值。这种方法是有原因的--为了支持通过延迟操作(如ajax调用、超时、promise链解析等)填充的绑定值。没有这一点,::只能成功地处理预填充的绑定值。

因此,只要确保在某个时间点将某个值设置为一次性绑定值就可以了。不要让它一直没有定义。

假设有一个条件

重复100次。只要确保在将值绑定到repeater或某个确定 LOL状态的操作时,即使该操作失败(例如ajax调用错误),仍然为它设置一个值(即使 null在javascript中也是一个值)。手表将在即将到来的摘要周期后删除,该周期呈现相应的DOM绑定。

在特定的柱塞中,您还可以这样做:

<ul ng-repeat="item in items"  ng-if="::lol">
  <li>{{ ::item }}</li>
</ul>

而不是

<ul ng-repeat="item in items">
  <li ng-if="::lol">{{ ::item }}</li>
</ul>
 类似资料:
  • 问题内容: angular js中的“ ng-bind”和“一次性绑定”有什么区别? 如果有任何区别,我应该在哪里使用它们? 问题答案: 双向数据绑定 AngularJS中的双向数据绑定意味着将数据从模型绑定到视图,反之亦然(数据从范围/控制器流到视图,再从视图流到范围/控制器)。“ NG-模型 ”是用于实现双向数据绑定的角指令。无论范围是否要求更新数据,对范围/控制器对该模型的任何修改都将自动传

  • 问题内容: 我想知道是否可能有一个ng类,其中class一度绑定,并且每个摘要周期评估一次class。 我知道我可以一次绑定完整的ng-class, 但是我需要一次绑定一个特定的表达式 当然,这是行不通的: 有办法吗? 问题答案: 方法1: 方法2:

  • 问题内容: 我的理解是,在下面的代码中,两个绑定只会 延迟地绑定一次 : 但是,在以下情况下 每个摘要 都会更新吗? 而 如何一次性约束力嵌套的小号? 问题答案: 方案1: 这两个表达式都是一次性的。添加项目或更改现有项目的名称将不会反映出来。 演示: http : //plnkr.co/edit/53r8FCmcNKNK4MmM6Uzxp2?p=preview 方案2: 第一个表达式将是一次性的

  • 问题内容: 自1.3.0-beta.10版本以来,AngularJS具有一项新功能:“懒惰的一次性绑定”。 可以在简单表达式的前面加上,告诉angular在首次评估表达式后停止观看。给出的常见示例如下所示: 类似以下表达式的语法是否类似? 问题答案: 是。您可以在每个表达式前添加,甚至可以在或中添加前缀: 实际上,代码只是检查表达式中的前两个字符是为了激活一次性绑定(然后将其删除,因此甚至不需要括

  • 问题内容: 想象一下可能会在网页上呈现的大量内容,例如图表。Angular提供2个选项来切换内容的可见性。 ng-show 将呈现内容,而不管其表达方式是什么,然后在事实之后简单地“隐藏”它。这是不理想的,因为用户在会话期间可能永远不会“打开”内容,因此渲染内容很浪费。 ng-if 在这方面更好。如果表达式为假,则用它代替ng- show可以防止首先显示大量内容。但是,它的优点也是缺点,因为如果用

  • AngularJS自1.3.0-beta.10版本以来有一个新功能:“惰性一次性绑定”。 简单表达式的前缀可以是<代码>:: ,告诉angular在首次计算表达式后停止监视。给出的常见示例如下: 下面的表达式有类似的语法吗?