在定义模型时使用DS.model或Ember.model或Ember.Object?

时间:2013-08-14 09:14:53

标签: ember.js ember-data javascript-framework ember-model

此截屏视频:http://www.embercasts.com/episodes/getting-started-with-ember-model使用Ember.model创建了这样的人物模型:

App.Person = Ember.Model.extend({
    name : Ember.attr()
})


docs使用Ember.Object

提供此示例
App.Person = Ember.Object.extend({
    say : function(thing) {
        alert(thing);
    }
});

此外,在defining models部分下,给出了使用DS.model

的示例
App.Person = DS.Model.extend({
  firstName: DS.attr('string'),
  lastName: DS.attr('string'),
  birthday: DS.attr('date'),

  fullName: function() {
    return this.get('firstName') + ' ' + this.get('lastName');
  }.property('firstName', 'lastName')
});

这三者之间有什么区别?何时使用哪个?

1 个答案:

答案 0 :(得分:31)

Ember.Object - mother of all

如Ember.Object中的非常具有说明性的article所述:

  

Ember.js中的几乎每个对象都来自一个公共对象:Ember.Object。该对象用作视图,控制器,模型甚至应用程序本身的基础。

     

这个简单的架构决策负责Ember的大部分一致性。因为每个对象都是从同一个核心对象派生的,所以它们都共享一些核心功能。每个Ember对象都可以观察其他对象的属性,将其属性绑定到其他对象的属性,指定和更新计算属性等等。

现在根据您的使用情况来区分和何时使用它们。

Ember.Object

Ember.Model

  • ember-model lib使用并扩展Ember.Object
  • 如果使用ember-model作为持久性库
  • ,则使用此类定义模型

DS.Model

  • ember-data使用,它是ORM系统基类,也从Ember.Object延伸
  • 当您使用ember-data作为持久性库来定义模型和关系等时使用它。

希望它有所帮助。