【问题标题】:Just created entity with ember-data doesn't have its state set刚刚使用 ember-data 创建的实体没有设置状态
【发布时间】:2013-04-20 03:20:05
【问题描述】:

我使用 Ember + Ember 数据。当我创建一个实体后,即使在相应的服务器端调用它的状态属性(isLoaded、isNew、isValid 等)都是未定义的。 我的期望是这些应该正确设置。例如,在服务器端调用之前,我希望 isNew 为“真”,在服务器端创建之后,我希望 isNew 为“假”。

我正在以这种方式创建实体:

myEntity = MyApp.MyEntity.createRecord({attr1: "value1"});
...
myEntity.transaction.commit();

来来回回的是:

Sent:
{"myEntity":{"attr1":"value1"}}
...
Received:
{"myEntity":{"id":2,"attr1":"value1","attr2":"value2"}}

实体本身是这样定义的:

MyApp.MyEntity = DS.Model.extend({
    attr1: DS.attr("string"),
    attr2: DS.attr("string")
});

不幸的是,远程调用“myEntity”之前和之后的所有状态属性都为“未定义”。 我错过了什么吗?

谢谢!

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    我猜这个问题可能是您没有遵循 Ember Data 的命名约定。如果您使用默认的DS.RESTAdapter,您的MyApp.MyEntity 将发布到/my_entity,Ember Data 将在my_entitymy_entitys 键下的响应中查找模型。

    还可以通过在App.Adapter 上使用map 函数来自定义此默认行为。

    【讨论】:

      【解决方案2】:

      我的问题是我直接检索状态,即不使用 getter。

      错误:myEntity.isNew -> 未定义

      正确:myEntity.get('isNew') -> true

      【讨论】:

        猜你喜欢
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 2017-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多