this.propertyName在ember组件中VS this.get('propertyName')

时间:2016-06-14 09:13:15

标签: ember.js

我在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;
  }
});

1 个答案:

答案 0 :(得分:1)

这已在When to use getters/setters and when to safely omit them?

详细解答

(我不能将此问题标记为"可能重复"但是)

  

Ember中方法或属性的定义与中的相同   Vanilla JavaScript,但在Ember中它们的解析方式不同。您   不与POJO合作。每次你从一个延伸   路径/控制器/视图,您正在添加处理的Ember图层   方法和属性不同。

不建议直接访问属性。在非常简单的情况下,它可能没问题,并且您获得相同的值,但在更复杂的情况下,您可能会得到不同的值。

PS:必须始终通过get()访问计算属性,因为这是重新计算的时刻。我认为Ember以某种方式缓存价值观,但我仍然是新手:)