如何设置要附加到特定容器的Ember View类?

时间:2012-11-26 04:29:17

标签: ember.js

Ember.View有一个名为.appendTo("#container")的好方法,它允许我为视图指定容器div。但是,当我使用路由器和.connectOutlet method时,我的视图实例是根据约定自动创建的,默认情况下会添加到页面 body 元素中。有没有办法配置视图的类定义,以便在创建时它将在我想要的#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中的特定项目?默认情况下,路由器会将视图附加到正文

这是路由器位:

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

为了澄清,我不想把我的整个Ember应用程序放在一个容器中。我的应用程序中有几个视图,大多数视图都直接在体内。但是有一些像这个问题中提到的那个,我想把它放在"#application-header" div中。

3 个答案:

答案 0 :(得分:1)

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

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

编辑:

重新阅读你的问题之后,我认为你应该研究一下这个名字,所以你可以这样做:

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

{{outlet}}

答案 1 :(得分:1)

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

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

通过这种方式,我们可以随时随地使用Jimux.BuildsView。你不得不说,恩白之美......

答案 2 :(得分:0)

只需在应用程序对象中添加rootElement即可。

var App = Ember.Application.create({
    rootElement: '#container'
});