我正在使用Ember Data 2.2.0和Ember 2.2.1。从数据存储中检索模型后,我想以字符串形式获取模型的类型名称。
根据API文档,DS.Model定义了modelName属性,该属性看起来像我想要的。但是,在使用model.modelName
从商店中检索到model.get('modelName')
后,我发现model
和findRecord
是未定义的。
另一方面,model._internalModel.modelName
按预期返回模型的小写,反斜线名称。
这里发生了什么?
最佳答案
在文档中似乎有点模棱两可。 modelName
示例使用DS.Store#modelFor
可能会与Ember.Route#modelFor
混淆,这无济于事。
根据文档,DS.Store#modelFor
返回“特定键的模型类。由采用类型键的方法(如find,createRecord等)使用”。据我了解,它返回的是实际的DS.Model
类,而不是实例。 _internalModel
也返回DS.Model
类,因此行为相同。
我相信更安全的选择是model.constructor.modelName
。