我在EmberJS中相对较新,我正在努力确保理解幕后发生的事情。 我理解,对于计算属性,我需要使用this.get('propertyName')来计算并获取属性。如果我们只是谈论带有值的普通属性,那么使用this.propertyName和this.get('propertyName')之间的区别是什么?
import Ember from 'ember';
export default Ember.Component.extend({
data: ['foobar', 'foo', 'bar'],
didInsertElement() {
let data = null;
data = this.get('data');
// VS
data = this.data;
}
});
答案 0 :(得分:1)
这已在When to use getters/setters and when to safely omit them?
详细解答(我不能将此问题标记为"可能重复"但是)
Ember中方法或属性的定义与中的相同 Vanilla JavaScript,但在Ember中它们的解析方式不同。您 不与POJO合作。每次你从一个延伸 路径/控制器/视图,您正在添加处理的Ember图层 方法和属性不同。
不建议直接访问属性。在非常简单的情况下,它可能没问题,并且您获得相同的值,但在更复杂的情况下,您可能会得到不同的值。
PS:必须始终通过get()访问计算属性,因为这是重新计算的时刻。我认为Ember以某种方式缓存价值观,但我仍然是新手:)