Emberjs在另一个模板中渲染其他模板

时间:2013-11-25 16:41:39

标签: templates ember.js routes rendering router

我想渲染模板' location'在模板的边栏内​​,允许'。 我的代码是emberjs.com渲染模板示例中显示的代码的副本,但是' location'模板要么根本没有加载,要么只加载'位置'模板重复但不在'许可'中呈现原始html。模板。因此显示了location.hbs,但不在其分配给的侧栏内。

这里有一些代码:D

<!-- Right Sidebar (a small piece of the 'permit' template) START -->
    <div id="sidebar-wrapper" class="super-super-float-right-col">
      <div id="sidebar-wrapper" class="super-float-right-col">
        <div id="sidebar-wrapper" class="float-right-col">
          {{outlet location}}
        </div>
      </div>
    </div>
  <!-- Right Sidebar END -->


VpcYeoman.PermitRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render('location');
    }
});

router.js

VpcYeoman.Router.map(function () {
...
  this.resource('permit', { path: '/permit/:permit_id' });
...
});

http://emberjs.com/guides/routing/rendering-a-template/再一次模糊不清,帮助不大。

emberjs社区聚集!

2 个答案:

答案 0 :(得分:3)

您已经创建了一个命名插座,但没有告诉它渲染到该指定插座。您正在使用的代码是使用location模板而不是默认模板(permit)。你会在下面的行中做点什么

this.render('location', {   // the template to render
  into: 'permit',                // the route to render into
  outlet: 'location',              // the name of the outlet in the route's template
  //controller: 'blogPost'        // the controller to use for the template
});

答案 1 :(得分:0)

感谢主人的帮助!

与解决方案相比,

http://emberjs.com/guides/routing/rendering-a-template/相当误导。

PermitRoute中写的内容必须与.hbs文件中的内容相同,并添加冒号。

renderTemplate: function() {
    this.render({ render:'location'});
}

所以HTML中的内容不会是{{outlet location}},正如他们的网站声称的那样,只会呈现“位置”而不是“允许”,但{{render'location'}}会呈现模板中的模板。