【问题标题】:Ember Data: model.get('modelName') is undefined, but model._internalModel worksEmber 数据:model.get('modelName') 未定义,但 model._internalModel 有效
【发布时间】:2016-01-18 21:41:47
【问题描述】:

我正在使用 Ember Data 2.2.0 和 Ember 2.2.1。从数据存储中检索模型后,我想将模型的类型名称作为字符串获取。

根据 API Docs,DS.Model 定义了一个 modelName 属性,看起来像我想要的。但是,在使用 findRecord 从商店检索 model 后,我发现 model.modelNamemodel.get('modelName') 未定义。

另一方面,model._internalModel.modelName 按预期返回模型的小写、破折号名称。

这是怎么回事?

【问题讨论】:

  • 你必须使用:model.get('constructor.modelName') 来实现你想要的。此外,在文档中 modalNamestore 类的属性,而不是记录。所以出乎意料的行为。请参阅文档中的示例进行说明。

标签: ember.js model ember-data


【解决方案1】:

在文档中看起来有点模棱两可。 modelName 示例使用 DS.Store#modelFor 并没有帮助,这可能与 Ember.Route#modelFor 混淆。

DS.Store#modelFor 根据文档返回“特定键的模型类。由采用类型键的方法(如 find、createRecord 等)使用”。我对此的理解是它返回实际的DS.Model 类,而不是实例。 _internalModel 也返回 DS.Model 类,因此行为相同。

我相信更安全的选择是model.constructor.modelName

【讨论】:

  • 这很有帮助! model.constructor.modelName 是我需要的。也许我遗漏了一些东西,但是从我的控制台中玩耍,看起来model._internalModel 仍然具有特定于实例的数据,例如idrecord... 它似乎是一个实例而不是一个类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多