什么ember.js组件负责将模板插入DOM?

时间:2012-06-24 15:36:39

标签: dom ember.js

我正在构建一个ember.js / rails应用程序。所有车把模板都存储在.js文件中。我想了解当路由器改变状态时它们如何插入到DOM中。 ember的哪个部分会这样做?如何告诉ember放置模板?

现在我只能将我的模板附加到<body>我有一个jsFiddle here

我知道在Ember.Application上设置rootElement,但是我希望应用程序控制页面的其他元素。

句柄/ HTML

<script type="text/x-handlebars" data-template-name="application">
    <h2>I'm the content</h2>
    <p>This should be inbetween the header &amp; footer</p>
    <p><strong>time</strong> {{time}}</p>
</script>

<header>
    <h1>Application</h1>
</header>
<article>
    <div id="content"></div>
</article>
<footer>
    <a href="http://blog.deanbrundage.com" target="_blank">by Dean</a>
</footer>

的JavaScript

window.App = Ember.Application.create();

App.Router = Em.Router.extend({
    initialState: 'root.home',
    root: Em.Route.extend({
        home: Em.Route.extend({
            view: App.ApplicationView
        })
    })
});

App.ApplicationController = Em.Controller.extend({
    time: Date()
});
App.ApplicationView = Em.View.extend({
    templateName: 'application'
});

App.initialize();

2 个答案:

答案 0 :(得分:5)

Ember.js中的当前实现将ApplicationView附加到应用程序的rootElement,请参阅here

一种可能的解决方案是覆盖appendTo的{​​{1}},请参阅http://jsfiddle.net/pangratz666/m8L6Z/

<强>的JavaScript

ApplicationView

答案 1 :(得分:1)

如果您使用的是主人,则可以通过网点处理插入和更改模板。 查看the official guide

如果您使用的是较旧版本的Ember,则更多的是手动过程。