2013-04-11 2 views
2

Я пытаюсь использовать данные ember-данных, и мне нужно иметь возможность динамически разрешать имя модели с учетом String.Как разрешить класс модели из имени строки в данных Ember?

Я заглянул в базу данных данных ember-data, но ничего не нашел. Тогда я нашел это в уголек:

/** 
    @private 

    This function defines the default lookup rules for container lookups: 

    * templates are looked up on `Ember.TEMPLATES` 
    * other names are looked up on the application after classifying the name. 
    For example, `controller:post` looks up `App.PostController` by default. 
    * if the default lookup fails, look for registered classes on the container 

    This allows the application to register default injections in the container 
    that could be overridden by the normal naming convention. 

    @param {Ember.Namespace} namespace the namespace to look for classes 
    @return {any} the resolved value for a given lookup 
*/ 
function resolverFor(namespace) { 

    resolve: function(fullName) { 
    return this.resolver(fullName) || this.registry.get(fullName); 
    }, 

    normalize: function(fullName) { 
    return fullName; 
    }, 

    lookup: function(fullName, options) { 

Я предположил бы, что Эмбер-данные зацепили в эту функциональность, так что я мог бы сделать что-н, как это:

App.resolver.resolveModel "model:#{modelName}"

Но, увы, нет ...

Возможно, это путь? (from store.js line ~ 1500)

typeMapFor: function(type) { 
    var typeMaps = get(this, 'typeMaps'); 
    var guidForType = Ember.guidFor(type); 

    var typeMap = typeMaps[guidForType]; 

    if (typeMap) { 
     return typeMap; 
    } else { 
     return (typeMaps[guidForType] = 
     { 
      idToCid: {}, 
      clientIds: [], 
      recordArrays: [] 
     }); 
    } 
    }, 

Похоже, что в магазине есть своего рода типКарты внутри?

ответ

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