{{myArray}} 现在在 beta.16 的视图中更新
{{myArray}} now updates in the view as of beta.16
更改检测已更改。
在 beta.16 之前,如果您的视图包含 {{myArray}}
,那么如果您不修改数组引用,该绑定将不会更新。例如,如果您将 push()
项添加到数组中,则视图不会更新以显示新项。解释是(好吧,是)因为数组引用没有改变,Angular 变化检测不会重新评估绑定。 beta.15 plunker 演示了这种行为。
从 beta.16(以及 RC.1)开始,情况有所不同。即使数组引用未更改,{{myArray}}
绑定现在也会更新!看到这个 RC.1 plunker.
我查看了 ChangeLog for beta.16,但我没有看到任何可以解释这种行为变化的内容(但也许我漏掉了什么)。有谁知道是什么导致了这个变化,还有什么可能会受到影响?
插件代码:
@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 堆栈
然后我们可以看到表达式(字符串)的比较,它们是不同的。所以 angular rc.1 将更新视图。
希望对您有所帮助:)
更改检测已更改。
在 beta.16 之前,如果您的视图包含 {{myArray}}
,那么如果您不修改数组引用,该绑定将不会更新。例如,如果您将 push()
项添加到数组中,则视图不会更新以显示新项。解释是(好吧,是)因为数组引用没有改变,Angular 变化检测不会重新评估绑定。 beta.15 plunker 演示了这种行为。
从 beta.16(以及 RC.1)开始,情况有所不同。即使数组引用未更改,{{myArray}}
绑定现在也会更新!看到这个 RC.1 plunker.
我查看了 ChangeLog for beta.16,但我没有看到任何可以解释这种行为变化的内容(但也许我漏掉了什么)。有谁知道是什么导致了这个变化,还有什么可能会受到影响?
插件代码:
@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 堆栈
然后我们可以看到表达式(字符串)的比较,它们是不同的。所以 angular rc.1 将更新视图。
希望对您有所帮助:)