【问题标题】:How do ampersand attributes know when to re-evaluate?&符号属性如何知道何时重新评估?
【发布时间】:2015-03-25 22:33:43
【问题描述】:

在这里看看这个小提琴:http://jsfiddle.net/bcaudan/SbrKj/

关键是在隔离作用域上有这样的代码:

{attr1: "=", attr2: "&"}

--并且当对attr1的更改更改绑定的父值时,attr2也会以某种方式自动重新评估其中的表达式,这是一个返回attr1值的函数,我不知道它是如何知道它的需要这样做。

【问题讨论】:

  • Angular 知道它需要在每个 $digest 循环中评估模板中的所有 {{ }} 表达式。函数没有改变,所以 Angular 每次都调用同一个函数。
  • 所以函数不断被调用看它的值是否改变了?????????那不可能有效率
  • 不,它只在摘要上调用,只有在调用 $scope.$apply 时才会发生。这发生在 ngModel 指令中。
  • 所以你真的需要小心这些在 $digest 循环上触发的函数不要太重,否则你可能会招致一些严重的性能损失。
  • @Aerovistae 你是正确的:被插值的函数。您不应该在其中进行任何潜在的阻塞计算。笔记。由于与页面的“任何”交互,该摘要循环经常发生。

标签: angularjs angularjs-directive angularjs-scope


【解决方案1】:

我不完全清楚您的要求,但您的指令模板正在插入您的 attr2(或在这种情况下为 delegateDisplay):

'{{delegateDisplay()}}<br>' 

这自然会导致重新评估$scope.displayTitle()函数

【讨论】:

    【解决方案2】:

    那是 AngularJS 做 2-way binding。您使用 ng-model 指令将模型变量绑定到 HTML 元素。

    当模型变量绑定到可以更改和显示变量值的 HTML 元素时,您就有了双向数据绑定。您可以将多个 HTML 元素绑定到同一个变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多