Ember数据:model.get('modelName')未定义,但model._internalModel有效

Max*_*ace 5 model ember.js ember-data

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

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

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

这里发生了什么?

loc*_*cks 15

在文档中看起来有些含糊不清.对于可能与之混淆的modelName示例使用没有帮助.DS.Store#modelForEmber.Route#modelFor

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

我相信更安全的替代方案正在做model.constructor.modelName.