0

Ember.View有一个很好的方法.appendTo("#container"),它允许我为视图指定一个容器 div。但是,当我使用路由器时.connectOutlet method,我的视图实例会根据约定自动创建,并默认添加到页面正文元素中。有没有办法配置视图的类定义,以便在创建时它将在我想要#container的 . 这是我的看法:

Jimux.BuildsView = Em.View.extend({
  templateName: 'builds',
  appendTo: '#jimux-header', #this was just a guess and did not work. but does some propery like this exist for the view?
  tagName: 'div',
  listVisible: true,
  ...

问这个问题的另一种方法是:我如何告诉 Ember 路由器将视图附加到 dom 中的特定项目?默认情况下,路由器将视图附加到body

这是路由器位:

# Connect builds controller to builds view
router.get('applicationController').connectOutlet("builds","builds", Jimux.buildsController)

澄清一下,我不想把我的整个 Ember 应用程序放在一个容器中。我的应用程序中有几个视图,其中大部分都可以直接在正文中使用。但是有一对像这个问题中提到的那样,我想把它们放在"#application-header"div 中。

4

3 回答 3

1

您可以为应用程序对象指定根元素。

window.App = Ember.Application.create({
    rootElement: '#ember-app'
});

编辑:

重新阅读您的问题后,我认为您应该查看命名的网点,以便您可以执行以下操作:

<div id="application-header">
    {{outlet builds}}
</div>

{{outlet}}
于 2012-11-26T04:32:30.173 回答
1

好吧..在理解你的问题后,我记得有同样的麻烦。此外,即使在浏览了 Ember 代码之后,我也没有找到任何方法来做到这一点。但后来我明白这只是为了好的目的。我知道您可能已经遇到过我们可以实现这一目标的车把。如果我们给视图添加一个 ID,我们就限制了应用程序,整个使用 ember 变得毫无用处。好的,来问你问题,据我所知,我们可以在 HTML 的 div 元素中添加小胡子模板。

<div id="jimux-header">
{{view Jimux.BuildsView}}
</div>

这样我们就可以在任何你想要的地方和尽可能多的地方使用 Jimux.BuildsView。Ember之美,你不得不说...

于 2012-11-26T06:56:52.590 回答
0

只需添加rootElement应用程序对象。

var App = Ember.Application.create({
    rootElement: '#container'
});
于 2012-11-26T04:31:33.997 回答