Como carregar dinamicamente componentes de brasa pelo nome em um modelo?
Minha pergunta é basicamente a mesma que emesta resposta, mas não consigo que o código funcione com o ember 1.7.0 e o & ember-cli.
eu tenho umwidget
no meu modelo e no meu modelo, quero ter algo como:
{{#each question in questions}}
{{#with question}}
<label>{{title}}</label>
{{render-component widget params=params}}
{{/with}}
{{/each}}
E um modelo de pergunta que se parece com:
{ id: 6,
title: "Is this a yes/no situation?",
help_text: 'Pick an option',
widget: 'yes-no',
params:
{
yes: {
text: 'You picked yes',
class: 'success'
},
no: {
text: 'Be careful, you picked no',
class: 'danger'
}
}
}
Eu criei umrender-component
auxiliar que contém o seguinte:
import Ember from 'ember';
function renderComponent(componentPath, options) {
console.log('inside helper with comp=' + componentPath + ', opts=' + options);
var component = Ember.Handlebars.get(this, componentPath, options);
var helper = Ember.Handlebars.resolveHelper(options.data.view.container, component);
return helper.call(this, options);
}
export {
renderComponent
};
export default Ember.Handlebars.makeBoundHelper(renderComponent);
Mas isso não funciona.component
está indefinido. Os documentos da API paraEmber.Handlebars.get não são muito úteis para explicar o queoptions
parâmetro é Além disso, não há menção de umresolveHelper
no docs agora, então não sei se o código está desatualizado.
Como carregar componentes pelo nome de uma variável?