Javascript 将Ember属性的花括号渲染为手柄分隔符

Javascript 将Ember属性的花括号渲染为手柄分隔符,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,我的控制器中有以下属性: panelTemplate: '<ul><li>Components:</li><li>{{multi-input-comp}}</li><li>{{modal-dialog-comp}}</li><li>End</li></ul>' panelTemplate:“组件:{{multi-input comp}}{{modal dialog comp}

我的控制器中有以下属性:

panelTemplate: '<ul><li>Components:</li><li>{{multi-input-comp}}</li><li>{{modal-dialog-comp}}</li><li>End</li></ul>'
panelTemplate:“
  • 组件:
  • {{multi-input comp}}
  • {{modal dialog comp}}
  • 结束
在与控制器对应的模板中,我希望两个组件(多输入组件和模态对话框组件)显示在列表中

但是在.hbs中写入
{{{panelTemplate}}
将显示以下内容:

  • 组成部分:
  • {{multi-input comp}}
  • {{modal dialog comp}}
  • 结束
有没有办法让把手将property panelTemplate的花括号视为分隔符,以便在图像中得到结果


从属性中移除花括号,并使用组件辅助对象渲染组件:

{{component componentName}}

有关component helper的更多信息,请查看ember文档:

,毕竟,我找到了一个解决方案:

//app/components/panel.js
panelTemplate: '<ul><li>Components:</li><li>{{multi-input-comp key="E-mails"}}</li><li>{{partial-test}}</li><li>End</li></ul>',
templateName: "temp-panel" //make sure it does not contain an upper case character

//app/templates/components/panel.hbs
{{partial (render-template panelTemplate templateName)}}



 //app/helpers/render-template.js
import Ember from 'ember'; 
export function renderTemplate(params/*, hash*/) {
    var obj= params[0];
    var panel  = params[1];
    var htmlContent =  Ember.HTMLBars.compile(obj);
    Ember.TEMPLATES[panel] = htmlContent;
    var template = Ember.TEMPLATES[panel];
    return panel;
}

export default Ember.Helper.helper(renderTemplate);
//app/components/panel.js
panelTemplate:“
  • 组件:
  • {{multi-input comp key=“E-mail”}}
  • {{partial test}}}
  • 结束
    • ”, templateName:“临时面板”//确保它不包含大写字符 //app/templates/components/panel.hbs {{partial(呈现模板panelTemplate templateName)} //app/helpers/render-template.js 从“余烬”导入余烬; 导出函数renderTemplate(params/*,hash*/){ var obj=参数[0]; var面板=参数[1]; var htmlContent=Ember.htmlbar.compile(obj); Ember.TEMPLATES[panel]=htmlContent; var-template=Ember.TEMPLATES[panel]; 返回面板; } 导出默认的Ember.Helper.Helper(renderTemplate);
更改属性名称如果不深入到余烬核心本身,您就无法做到这一点。@Lux:是的,看来我必须这样做,或者可能会改变我遵循的整个概念。顺便说一句,这是实际例子的问题,因为在这个问题中,我给出了一个过于简化的例子,这造成了一个误解。@userGS这个属性是从哪里得到的?你不能用手柄代替包含属性的html吗?你可以让它动态。您可以拥有一个数组
组件:['multi-input-comp','modal-dialog-comp']
,然后在把手
{{{{{{35;每个组件作为{c}}}{{component c}{{/each}}
中对其进行循环。您甚至可以构建自己的元语言,包含组件和纯文本部分,如果要使用组件帮助器或仅显示内容,您可以使用手柄。谢谢您的回复。这个答案适用于我给出的例子。我试图使属性尽可能简单,但实际上,我正在处理的属性有点复杂。事实上,我有一个包含多个组件和html标记的面板。我会编辑它使它更具体。好吧,你可以让你的财产变得尽可能复杂。它可以是一个计算属性,可以做很多事情,但最终你只需要一个字符串,它是你想要呈现的组件的名称。由于某种原因,我无法编辑它。这是模板中的属性:panelContent:“
    {{component1 name}{{component2 name}”。hbs我想这样称呼它{{panelContent},而不是
      {component1 name}{li>{component2 name}li>{li>{component2 name}”
    问题是,我不仅要传递组件名称,还要传递包含它的html标记,如果我使用您建议的组件帮助器,这将导致错误。