Acesse uma propriedade computada dependente de uma chave gerada dinamicamente

Temos que saber antecipadamente o caminho da propriedade que queremos observar, a fim de fazer com que o computador calculado dispare corretamente. No entanto, podemos definir uma propriedade computada que cria internamente uma cópia do objeto com a chave da variável interna e a acessa estendendo o objeto recém-criado e adicionando um alias à propriedade. Pode ser o modelo também, mas neste caso será um objeto chamado cacheObject . O nome da chave da propriedade da variável dependand é item.id , e será alterado dependendo do item que estivermos observando em cada caso.

itemCacheProperty: Ember.computed , 'cacheObject', 'item.id', ->
itemId
= @get('item.id')
if itemId
dynamicClass
= Ember.Object.extend(value: Ember.computed.alias("cacheObject.#{itemId}"))
dynamicClass
.create(cacheObject: @get('cacheObject'))
else
Ember.Object.create {}