Javascript 对象属性的属性依赖关系

Javascript 对象属性的属性依赖关系,javascript,aurelia,Javascript,Aurelia,我希望使用属性依赖项来避免对计算属性进行脏检查。由于计算属性所依赖的属性不是原语,而是对象的属性,所以我不知道如何实现这一点 代码: 从'aurelia framework'导入{computedFrom}; 出口类人员{ 个人资料={ 名字:“约翰”, 姓氏:“Doe”, //更多属性。。。 } // ... //不起作用: @计算自('personData.firstName','personData.lastName') //也没有: //@computedFrom('personData

我希望使用属性依赖项来避免对计算属性进行脏检查。由于计算属性所依赖的属性不是原语,而是对象的属性,所以我不知道如何实现这一点

代码:

从'aurelia framework'导入{computedFrom};
出口类人员{
个人资料={
名字:“约翰”,
姓氏:“Doe”,
//更多属性。。。
}
// ...
//不起作用:
@计算自('personData.firstName','personData.lastName')
//也没有:
//@computedFrom('personData[“firstName”],'personData[“lastName”]”)
//也不是:
//@computedFrom('personData'))
获取全名(){
返回`${this.personData.firstName}${this.personData.lastName}`;
}
// ...
}
我会在
personData
属性中添加watchers(),并手动设置
fullName


使用@computedFrom('personData'),并在属性更改时始终创建新的
personData
this.personData=Object.assign({},this.personData,{firstName:“new firstName”})
属性将很快增加对表达式的支持-请注意

警告-过度使用
@computedFrom
(例如
@computedFrom(p1.p2.p3,p4.p5,p6,p7,p8)
)可能会比脏检查性能差。观察者的一次性设置与脏检查的连续功能评估之间存在权衡-您的里程可能会有所不同

另一个选项是在视图中使用带绑定的
,并直接绑定到对象道具:

${firstName}${lastName}

最后但并非最不重要的一点是,
aurelia computed
插件可以解析getter函数体并生成一个不使用脏检查的观察者:

观察者将是一个选项,如果
computedFrom
装饰器不支持对象属性。第二个建议是没有选项,因为
personData.firstName
personData.lastName
绑定到UI输入控件,手动截取数据流以始终创建新的
personData
对象太麻烦,而且没有好的样式。是否已重新添加?