【问题标题】:Render dynamic templates in Ember.js在 Ember.js 中渲染动态模板
【发布时间】:2015-03-14 12:42:26
【问题描述】:

我是 Ember 的新手,所以这可能是一个愚蠢的问题,但请耐心等待。是否有特定原因无法使用动态字符串呈现模板?具体来说,我将各种对象推送到控制器变量,如下所示:

this.controllerFor('application').get('popups').pushObject({
  resource: article,
  template: 'article'
});

然后尝试渲染它们:

{{#each popup in model}}
  {{ render popup.template popup.resource }}
{{/each}}

这在 Ember 中不起作用,因为它需要一个字符串作为模板。我刚刚在 renderHelper 函数的 ember 源中修补了这个:

if(name.value) name = name.value();

这可以确保如果名称来自属性,它会被正确地转换为字符串。它工作得很好。 Ember 不支持开箱即用的原因是什么?我错过了什么吗?

上面的东西的一点背景:我想在页面上的弹出窗口中打开很多不同的资源,但我想让弹出窗口与当前路由的其余部分分开,这样我可以在他们自己的页面上显示它们不需要重复代码。我的想法是我将所有打开的弹出窗口推送到一个全局数组,并且它们呈现在页面底部(有点像我们现在没有余烬)。也许我错过了更好的方法来做到这一点!

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    你想要

    • 创建独立于路线的弹出模板
    • 将数据传递给模板并在任何地方渲染

    对吗?如果是的话,Ember.js 中有一个很好的 component 概念

    组件是一个独立于应用程序的小模块。它只取决于传入的数据。

    它可以在不同的部分重复使用,而不会相互影响。它们特别适合运行 qtip 等第三方插件。

    here 是一篇关于组件用例的好文章。

    【讨论】:

    • 不,不完全是。我已经考虑过使用一个组件,但它并没有真正奏效。我的问题是我需要在弹出窗口inside 渲染一个模板,包括控制器/路由等。但更具体地说,这个模板需要有一个动态路径,这是我试图描述的真正问题多于。一个组件可以使其可重用,但无论如何所有弹出窗口都呈现在一个地方。我基本上想将模板推送到弹出数组中;)
    • 您可以覆盖组件的templateName 属性。但我从未尝试过这样做。
    • 嗯,那么整个组件都有这个模板。我想在弹出窗口中有一些共享代码,并且弹出窗口的内容应该来自模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多