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

Jat*_*tin 20 javascript-framework ember.js ember-data ember-model

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

App.Person = Ember.Model.extend({
    name : Ember.attr()
})
Run Code Online (Sandbox Code Playgroud)


文档给出了用这个例子Ember.Object

App.Person = Ember.Object.extend({
    say : function(thing) {
        alert(thing);
    }
});
Run Code Online (Sandbox Code Playgroud)

此外,在定义模型部分下,给出了该示例使用的示例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')
});
Run Code Online (Sandbox Code Playgroud)

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

int*_*xel 31

Ember.Object - 所有人的母亲

正如这篇关于Ember.Object的非常具有说明性的文章所述:

几乎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作为持久性库来定义模型和关系等时,可以使用它.

希望能帮助到你.