2014-02-09 3 views
0

Я использую данные Ember Data и могу динамически находить имя класса модели достаточно легко. Например, если у меня есть модель под названием Foobar и контроллер под названием FoobarsController который представляет собой контроллер массива которого content свойство указывает на модель, может я тогда:Получение от имени класса модели до его типа

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

Это приведет к foobarClassName равной «App.Foobar» , Отлично. Теперь, если я хочу решить эту проблему с типом модели, в данном случае foobar?

ответ

0

Я до сих пор не имеют ни малейшего представления о том, как сделать это с помощью API вызова Ember, так что я только что создали свой собственный подмешать, который дает вам несколько мета-атрибуты для контроллеров, лежащих в основе модели, включая мой собственный хитрый расчет для «типа модели »(иначе, вы можете динамически использовать это, чтобы вызвать метод 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 реализации моего решения этого вопроса. Надеюсь это поможет. Я приму свой ответ, если в ближайшие дни я не получу лучшего.

Смежные вопросы