加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – {{myArray}}现在在beta.16中更新了视图

发布时间:2020-12-17 07:56:20 所属栏目:安全 来源:网络整理
导读:变更检测已更改. 在测试版16之前,如果您的视图包含{{myArray}},则如果不修改数组引用,则不会更新该绑定.例如,如果将()项目推送到阵列上,则视图将不会更新以显示新项目.解释是(好吧,是)因为数组引用没有改变,Angular变化检测不会重新评估绑定.这beta.15 plunk
变更检测已更改.

在测试版16之前,如果您的视图包含{{myArray}},则如果不修改数组引用,则不会更新该绑定.例如,如果将()项目推送到阵列上,则视图将不会更新以显示新项目.解释是(好吧,是)因为数组引用没有改变,Angular变化检测不会重新评估绑定.这beta.15 plunker演示了这种行为.

从beta.16(以及RC.1)开始,情况就不同了.即使数组引用未更改,{{myArray}}绑定现在也会更新!见RC.1 plunker.

我看了ChangeLog for beta.16,我没有看到任何可以解释这种行为变化的东西(但也许我错过了一些东西).有谁知道是什么导致了这种变化,还有什么可能会受到影响?

Plunker代码:

@Component({
  selector: 'child',template: `<p>child: {{arr}}`
})
export class Child {
  @Input() arr;
}
@Component({
  selector: 'my-app',template: `{{title}} <p>parent: {{arr}}
    <button (click)="modifyArray()">modify array</button>
    <child [arr]="arr"></child>`,directives: [Child]
})
export class AppComponent {
  title = "Angular 2 beta.15";  // or "Angular 2 RC.1",as appropriate
  arr = 'one two three'.split(' ');
  modifyArray() {
    this.arr.push('another');
    console.log(this.arr);
  }
}
我认为与DetectChanges相关的代码已更改(ChangeDetector.detectChangesInRecordsInternal beta.15 vs.View.detectChangesInternal rc.1).你可以在图片中看到它.

Beta.15堆栈

如您所见,有一个数组的比较

RC.1堆栈

然后我们可以看到表达式(字符串)的比较,它们是不同的.因此角度rc.1将更新视图.

愿它能帮到你:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读