Angular 绑定到函数结果
Angular binding to function results
我一直在阅读 angular.io 上的指南并遇到了 部分
在 NgClass 指令上。
在提供的示例中,ngClass 的源代码是一个组件函数:
// HTML
<div [ngClass]="setClasses()">This div is saveable and special</div>
// Controller
setClasses() {
let classes = {
saveable: this.canSave, // true
modified: !this.isUnchanged, // false
special: this.isSpecial, // true
};
return classes;
}
考虑到这不会在摘要周期中产生大量开销
该指令不知道函数的结果何时发生变化,并且
会在每个摘要周期中触发对功能的新评估吗?在
对比我希望下面的代码提供相同的功能
但只有当观察到的值之一有
已更改(canSave、isUnchanged、isSpecial)。
<div [ngClass]="{ saveable : canSave, modified : !isUnchanged, special: isSpecial }">This div is saveable and special</div>
有人可以阐明我应该考虑什么吗?
优化性能?一个示例用例是启用此 ngClass
在可见页面上创建 ~200 个元素的 ngRepeat。
作为一个边节点和较小的问题,我想知道是否有什么好的
了解一次性绑定的资源(在 angular2 与 angular1 中)。这
指南似乎没有涵盖这一点,我希望有一个异步的
时间绑定在 angular2 中可用。
Does this not create a large overhead during the digest cycle considering the directive does not know when the result of the function has changed and would trigger a new evaluation of the function during each digest cycle? In contrast I'd expect the following code to provide the same functionality but to only re-evaluate specifically when one of the observed values have changed (canSave, isUnchanged, isSpecial).
你的结论是正确的。
setClasses
方法 returns 每次调用一个不同的实例,这使得 ngClass
中的比较成本更高。如果只要没有更改依赖项就返回相同的实例,则绑定到方法 this
方式很好。
这个问题最近得到了解决。 https://github.com/angular/angular.io/issues/3072
As a side node and smaller question I was wondering if there is any good resource to learn about one-time binding (in angular2 vs angular1). The guide does not appear to cover this and I was hoping to have an async one time bind available in angular2.
Angular2 不支持一次性绑定。
我一直在阅读 angular.io 上的指南并遇到了 部分 在 NgClass 指令上。 在提供的示例中,ngClass 的源代码是一个组件函数:
// HTML
<div [ngClass]="setClasses()">This div is saveable and special</div>
// Controller
setClasses() {
let classes = {
saveable: this.canSave, // true
modified: !this.isUnchanged, // false
special: this.isSpecial, // true
};
return classes;
}
考虑到这不会在摘要周期中产生大量开销 该指令不知道函数的结果何时发生变化,并且 会在每个摘要周期中触发对功能的新评估吗?在 对比我希望下面的代码提供相同的功能 但只有当观察到的值之一有 已更改(canSave、isUnchanged、isSpecial)。
<div [ngClass]="{ saveable : canSave, modified : !isUnchanged, special: isSpecial }">This div is saveable and special</div>
有人可以阐明我应该考虑什么吗? 优化性能?一个示例用例是启用此 ngClass 在可见页面上创建 ~200 个元素的 ngRepeat。
作为一个边节点和较小的问题,我想知道是否有什么好的 了解一次性绑定的资源(在 angular2 与 angular1 中)。这 指南似乎没有涵盖这一点,我希望有一个异步的 时间绑定在 angular2 中可用。
Does this not create a large overhead during the digest cycle considering the directive does not know when the result of the function has changed and would trigger a new evaluation of the function during each digest cycle? In contrast I'd expect the following code to provide the same functionality but to only re-evaluate specifically when one of the observed values have changed (canSave, isUnchanged, isSpecial).
你的结论是正确的。
setClasses
方法 returns 每次调用一个不同的实例,这使得 ngClass
中的比较成本更高。如果只要没有更改依赖项就返回相同的实例,则绑定到方法 this
方式很好。
这个问题最近得到了解决。 https://github.com/angular/angular.io/issues/3072
As a side node and smaller question I was wondering if there is any good resource to learn about one-time binding (in angular2 vs angular1). The guide does not appear to cover this and I was hoping to have an async one time bind available in angular2.
Angular2 不支持一次性绑定。