Ember.js 从模型中获取';它的类名称';s型

Ember.js 从模型中获取';它的类名称';s型,ember.js,ember-data,Ember.js,Ember Data,我使用的是Ember数据,可以很容易地动态找到模型的类名。例如,如果我有一个名为Foobar的模型和一个名为foobarscocontroller的控制器,该控制器是一个数组控制器,其内容属性指向该模型,那么我可以: FoobarsController = Ember.ArrayController.extend({ foobarClassName: function() { return this.get('content.typeKey'); }.proper

我使用的是Ember数据,可以很容易地动态找到模型的类名。例如,如果我有一个名为
Foobar
的模型和一个名为
foobarscocontroller
的控制器,该控制器是一个数组控制器,其
内容
属性指向该模型,那么我可以:

FoobarsController = Ember.ArrayController.extend({
    foobarClassName: function() {
        return this.get('content.typeKey');
    }.property()
}

这将导致foobarClassName等于“App.Foobar”。伟大的现在,如果我想将其解析回模型的类型,在本例中,
foobar

我仍然不知道如何使用Ember API调用来实现这一点,所以我刚刚创建了自己的mixin,它为基础模型的控制器提供了一些元属性,包括我自己对模型“类型”的巧妙计算(aka,因此您可以动态地使用它来调用find(type)方法和其他方法)

代码如下:

App.ModelMetaMixin = Ember.Mixin.create({
    _modelProperty: 'content', // the property on the controller to find the bound reference to the model (typically found at 'content')
    modelRef: function() {
        var property = this._modelProperty;
        return this.get(property + '.constructor');
    }.property(this._modelProperty),
    modelName: function() {
        return String(this.get('modelRef'));
    }.property(this._modelProperty),
    modelType: function() {
        var name = this.get('modelName').split('.');
        return Ember.String.camelize(name.pop());
    }.property(this._modelProperty)
}
请参阅
modelType
实现以了解我对这个问题的解决方案。希望这能有所帮助。如果我在未来几天内没有得到更好的答案,我将接受我自己的答案