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

根据API文档,DS.Model定义了modelName属性,该属性看起来像我想要的。但是,在使用model.modelName从商店中检索到model.get('modelName')后,我发现modelfindRecord是未定义的。

另一方面,model._internalModel.modelName按预期返回模型的小写,反斜线名称。

这里发生了什么?

最佳答案

在文档中似乎有点模棱两可。 modelName示例使用DS.Store#modelFor可能会与Ember.Route#modelFor混淆,这无济于事。

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

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

10-07 15:48