Ember.js 从模型中获取';它的类名称';s型
我使用的是Ember数据,可以很容易地动态找到模型的类名。例如,如果我有一个名为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
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
实现以了解我对这个问题的解决方案。希望这能有所帮助。如果我在未来几天内没有得到更好的答案,我将接受我自己的答案