我使用的是Ember Data 2.2.0和Ember 2.2.1。从数据存储中检索模型后,我希望将模型的类型名称作为字符串。
根据API文档,DS.Model定义了modelName属性,看起来像我想要的。但是,在使用model.modelName
从商店中检索model.get('modelName')
后,我发现model
和findRecord
未定义。
另一方面,model._internalModel.modelName
按预期返回模型的小写,虚线化名称。
这里发生了什么?
答案 0 :(得分:14)
在文档中看起来有点含糊不清。 modelName
示例使用可能与DS.Store#modelFor
混淆的Ember.Route#modelFor
并不会有帮助。
DS.Store#modelFor
返回"特定键的模型类。由采用类型键的方法(如find,createRecord等)"使用。我理解的是它返回实际的DS.Model
类,而不是实例。 _internalModel
也返回DS.Model
类,因此行为相同。
我认为更安全的选择是model.constructor.modelName
。