javascript - Ember,在动态模板中渲染内容

标签 javascript ember.js ember-cli htmlbars

我在如何使用 Ember v1.13.1 渲染一些我无法控制的动态 HTML 内容中遇到了一些困难。在这个特定的场景中,我从服务调用中获取导航头和导航脚并将它们放入我的组件中:

export default Ember.Component.extend({
  // I don't control these. They come from somewhere else
  bodyStart: '<div class="header">...</div><div class="contentBody">',
  bodyEnd: '</div><footer>...</footer>',
});

因此,在我的组件模板中,我尝试执行以下操作:

{{{bodyStart}}}
{{yield}}
{{{bodyEnd}}}

我希望将产量内容放置在 <div class="contentBody"> 内元素,但事实并非如此。相反,内容主体在 {{yield}} 之前关闭。 ,并且 bodyEnd 关闭 div 被忽略。

我可能只是错过了一些明显的东西。任何有关如何解决此问题的想法将不胜感激。

干杯

最佳答案

我相信发生的情况是,每个 {{{variable}}} 都是独立构造的,并独立插入到 DOM 中,这会导致未关闭的 DOM 节点被关闭。我能想到的唯一方法是包含模板编译器并使用 bodyStart 和 bodyStop 重新编译模板。

App.ContentWrappedComponent = Ember.Component.extend({
  startBody: '',
  endBody: '',
  layout: function(){
    return Ember.HTMLBars.compile(
      this.get('bodyStart') + 
      '{{yield}}' + 
      this.get('bodyEnd')
    );
  }.property('bodyStart', 'bodyEnd')
});

您还需要添加到 Brocfile.js:

app.import('bower_components/ember/ember-template-compiler.js');

JSBin:http://emberjs.jsbin.com/ticituxapa/3/edit?html,css,js,output

关于javascript - Ember,在动态模板中渲染内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620205/

相关文章:

javascript - 在 ember/ember-cli 的子文件夹中生成组件

ember.js - 为什么我应该在 NPM 或 yarn 上使用 ember install?

javascript - 错误 : Metadata version mismatch for module found version 4, 预期 3

javascript - 有没有办法确定你想要插入 JavaScript 数组的值的数量?

ember.js - Ember.js 中多个模型的对象集合作为模板中的可迭代内容

Ember.js 为 {{render}} 助手设置模型数据

ember.js - 相互矛盾的验收测试

javascript - dojotoolkit : XMLHttpRequest cannot load file

javascript - 将 jquery 与 ejs 模板结合使用

ember.js - 创建模型ember js的记录数组