我正在阅读set()
方法的Ember.js API reference,而我并不了解某个特定段落。
计算属性
如果尝试在具有计算属性的键上设置值 处理程序定义(参见示例的get()方法),然后set()将 调用该方法,传递值和键而不是简单 改变价值本身。这对你来说很有用 需要实现由一个或多个成员组成的属性 属性。
我理解set()
如何独立工作,但设置计算属性(函数)仍然没有点击,即使在阅读本段后也是如此。
有人可以提供额外的解释或示例吗?
答案 0 :(得分:3)
您可以阅读https://guides.emberjs.com/v2.14.0/object-model/computed-properties/#toc_setting-computed-properties以便更好地理解。
在这里,我只想解释同样的事情。
import Ember from 'ember';
export default Ember.Component.extend({
firstName: '',
lastName: '',
fullNameCP: Ember.computed('firstName', 'lastName', function() {
return `${this.get('firstName')} ${this.get('lastName')}`
}),
fullNameCPwithGetSet: Ember.computed('firstName', 'lastName', {
get(key) {
return `${this.get('firstName')} ${this.get('lastName')}`;
},
set(key, value) {
let [firstName, lastName] = value.split(/\s+/);
this.set('firstName', firstName);
this.set('lastName', lastName);
return value;
}
})
});
在上面,
如果我们说this.set('fullNameCP','Yehuda Katz')
之后它将被视为普通属性,它将不会被视为计算属性。您不应手动将fullNameCP
设置为新值。如果你想这样做,那么你需要使用Getter和Setter定义Computed属性,如fullNameCPwithGetSet
。
如果我们说this.set('fullNameCPwithGetSet','Yehuda Katz')
,那么它会通过传递值来调用计算属性set
的{{1}}方法,即。fullNameCPwithGetSet
,以便我们可以设置确切的依赖键的值。