anglejs – 一次性绑定与ng-if在角度?

前端之家收集整理的这篇文章主要介绍了anglejs – 一次性绑定与ng-if在角度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个看法:
<div ng-repeat="foo in foos">
  <p ng-if="bar">omg lol</p>
  <p ng-if="!bar">lol omg</p>
</div>

我实际上是创造(2 * foos.length)1 $$观察者,这真的不好.我已经在线发现了几个来源,说你可以做ng-if =“:: bar”,但是当我这样做时观察者的数量不会改变.有没有办法强制 – 如果是一次绑定?

真的很笨,不得不做:

<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 $$观察者的东西…所以我正在寻找一种替代方案,以避免这样的愚蠢.

只是延长我的意见回答.

Angular 1.3一次绑定语法(:):的确会删除不必要的手表.只是在设置相关数据后,您需要测量一次手表.这就是为什么.当您在视图中设置一次性绑定属性时,角度将在其上设置一个临时手表,直到它获得一个定义的值,即除了未定义的值之外.这种方法是出于某种原因 – 为了支持通过延迟操作(如ajax调用,超时,承诺链解析等)填充的绑定值.没有这个::将不能成功地在任何东西,但预先填充的绑定值.

所以只要确保在某个时间点设置一些值到一次绑定值.不要让它保持不确定.

假设你有条件< divng-if =“:: lol”>< / div>重复100次.只要确保将值绑定到中继器或某些确定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>

猜你在找的Angularjs相关文章