我想使用属性依赖项来避免对计算属性进行脏检查。由于计算属性所依赖的属性不是基元,而是对象的属性,我不知道如何使其工作。
代码:
import {computedFrom} from 'aurelia-framework';
export class Person {
personData = {
firstName: 'John',
lastName: 'Doe',
// More attributes...
}
// ...
// Doesn't work:
@computedFrom('personData.firstName', 'personData.lastName')
// Neither does:
// @computedFrom('personData["firstName"], 'personData["lastName"]')
// Nor:
// @computedFrom('personData')
get fullName() {
return `${this.personData.firstName} ${this.personData.lastName}`;
}
// ...
}
答案 0 :(得分:2)
@computedFrom
属性将很快添加对表达式的支持 - 密切关注https://github.com/aurelia/binding/pull/276
谨慎之处 - 过度使用@computedFrom(p1.p2.p3, p4.p5, p6, p7, p8)
(例如with
)最终可能不如脏检查那么高效。在一次性设置观察者与持续功能评估之间进行权衡,并进行肮脏检查 - 您的里程可能会有所不同。
另一种选择是在视图中使用<span with="personData">${firstName} ${lastName}</span>
绑定并直接绑定到对象道具:
aurelia-computed
最后但并非最不重要的是,C:\Program Files\Teradata\client\14.10\Teradata Parallel Transporter\bin64;
C:\Program Files\Teradata\client\14.10\Teradata Parallel Transporter\msg64;
C:\Program Files (x86)\Teradata\client\14.10\Teradata Parallel Transporter\bin;
C:\Program Files (x86)\Teradata\client\14.10\Teradata Parallel Transporter\msg;
插件可以解析getter函数体并生成一个不使用脏检查的观察者:https://github.com/jdanyow/aurelia-computed
答案 1 :(得分:0)
我会在personData
属性上添加观察者(https://stackoverflow.com/a/28437456/3436921)并手动设置fullName
。
或
使用@computedFrom(&#39; personData&#39;)并在属性更改时始终创建新的personData
this.personData = Object.assign({}, this.personData, {firstName: "new first name"})