Ember JS属性访问者

时间:2016-05-06 17:28:03

标签: javascript ember.js

我看到了Ember模型Book

export default Model.extend({
  title: attr('string'),
});

可以访问该书的标题属性:book.get('title');

这种表示法似乎很复杂且容易出错(没有IDE支持)。为什么无法访问属性,如:

  • book.title
  • 甚至是book.title()

是否有技术上的理由要做到这一点,或者它只是"好方法"在JS中做到这一点?

我希望这个问题不是愚蠢的,我对这些JS框架很陌生。

感谢。

1 个答案:

答案 0 :(得分:1)

答案有点复杂。我会尝试尽可能简洁地解释它。可以计算和观察Ember中的属性。例如,在你的例子中,如果我这样做:

export default Model.extend({
  title: DS.attr('string'),
  author: DS.attr('string'),
  displayName: function(){
    return this.get('title') + " By: " + this.get('author');
  }.property('title','author')
});

所以现在我有一个依赖于其他两个属性的计算属性。所以当我调用get(' displayName')时;如果财产被观察,计算或者是否在链条中使用道具,我根本不必担心。这也确保了绑定和所有内置的余烬都能正常工作。

Ember的原则之一是调用者不需要担心余烬金属内部如何工作或处理对象。

同样使用.get()和.set()约定遵循Uniform access principle

希望这会有所帮助。