对象属性的属性依赖项
Property dependencies on object attributes
我想使用属性依赖项来避免对计算属性进行脏检查。由于计算属性所依赖的属性不是基元,而是对象的属性,我不知道如何使其工作。
法典:
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}`;
}
// ...
}
@computedFrom
属性将很快添加对表达式的支持 - 请留意 https://github.com/aurelia/binding/pull/276
需要注意的是 - 过度使用@computedFrom
(例如@computedFrom(p1.p2.p3, p4.p5, p6, p7, p8)
)最终可能比脏检查性能差。观察器的一次性设置与带有脏检查的连续功能评估之间存在权衡 - 您的里程可能会有所不同。
另一种选择是在视图中使用 with
绑定并直接绑定到对象 props:
<span with="personData">${firstName} ${lastName}</span>
最后但并非最不重要的一点是,有一个aurelia-computed
插件,它可以解析 getter 函数体并生成一个不使用脏检查的观察器:https://github.com/jdanyow/aurelia-computed
我会在personData
属性上添加观察者(https://stackoverflow.com/a/28437456/3436921)并手动设置fullName
。
或
使用 @computedFrom('personData'),并在属性更改时始终创建新personData
this.personData = Object.assign({}, this.personData, {firstName: "new first name"})
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 具有多个依赖项的Ember属性不会按预期更新
- Ember-自定义计算属性,用于检查是否存在所有依赖字段
- 使计算属性依赖于emberjs中另一个对象的所有属性
- 在调用依赖于它的方法时设置 javascript 对象属性
- 依赖于其他属性的 JavaScript 属性值
- 与号中的相互依赖派生属性
- 对象属性的属性依赖项
- 可以't访问require.js中的依赖对象字段-无法读取未定义的属性
- Vue.js中的相互依赖属性
- Rivets.js属性依赖于几个字段
- EmberJS-当相同的值被分配给依赖属性时,更新计算的属性
- 如何同步声明JS对象,然后用依赖于并发操作的数据编辑对象的属性
- 加载依赖于页面的面向对象JS属性的最好方法是什么?
- 依赖于Backbone.js模型的属性
- 编写对象字面量意味着属性不能相互依赖
- 如何测试具有关系依赖关系的Ember模型的计算属性
- 如何创建依赖于普通变量、函数或逻辑的ember属性
- wpf/silverlight中的依赖项属性与javascript对象属性