【问题标题】:Using DS.model or Ember.model or Ember.Object when defining a model?定义模型时使用 DS.model 或 Ember.model 或 Ember.Object?
【发布时间】:2013-08-16 03:53:59
【问题描述】:

此截屏视频: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')
});

这三个有什么区别,什么时候用哪个?

【问题讨论】:

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


    【解决方案1】:

    Ember.Object - mother of all

    正如在 Ember.Object 上这个非常说明性的 article 中所述:

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

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

    现在了解差异以及何时可以使用它们,具体取决于您的用例。

    Ember.Object

    • 是所有 Ember 对象的 ember.js 主类。它是Ember.CoreObject 的子类,应用了Ember.Observable mixin。
    • 你用它来创建任意对象,这个类也是使数据绑定成为可能的基础。

    Ember.Model

    • ember-model lib 使用并扩展Ember.Object
    • 如果你使用 ember-model 作为你的持久化库,你可以使用这个类来定义一个模型

    DS.Model

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

    希望对你有帮助。

    【讨论】:

    • 持久化库或者“数据持久化层”ember一直在说什么?
    • @Jatin,当您有一个用户可以在其中创建/更新/删除对象的网络应用程序时,例如带有 cmets 的帖子,您很快就需要将这些对象的状态存储在某个地方(在一个数据库,或者例如使用本地存储),为此,您需要编写代码来执行此persisting 任务。使用 ember-data 或 ember-model 为您提供了执行此操作的基础,因此您将需要更少的代码来使您的应用能够存储它的状态
    • @Jatin,persistencesaving 的同义词。
    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多