重新初始化Ember应用程序/恢复应用程序状态

时间:2013-11-15 15:10:43

标签: javascript ember.js seo

根据Google的AJAX抓取规范(?_escaped_fragment_=...),我在Node.JS后端内部使用phantom.js渲染静态HTML页面以进行搜索引擎优化。前端应用程序是用Ember编写的(版本1.0.0)。

我注意到在我的浏览器中测试那些静态HTML URL时,Ember无法重新初始化,导致错误,如

Assertion failed: You cannot use the same root element (body) multiple times in an    Ember.Application 
Assertion failed: You cannot make a new Ember.Application using a root element that is a descendent of an existing Ember.Application 

我想知道是否:

  • 出现这些错误是因为DOM已经填充了Ember的HTML类和ID? 例如:<body class="ember-application"><script id="metamorph-7-start" type="text/x-placeholder"></script>
  • 有一种方法可以使用已经预先渲染的DOM重新初始化我的Ember应用程序而没有任何错误,并且在通过我的Node.js后端传递它们之前不必使用一些正则表达式魔术修改HTML类吗?
  • 我甚至可以恢复我的Ember应用程序的应用程序状态?

1 个答案:

答案 0 :(得分:2)

您收到此错误是因为您在同一个rootElement声明了多个余烬应用:

// ok
App = Ember.Application.create({ rootElement: "#wizard" });
/// rootElement default to "body"
App = Ember.Application.create();
// throw error. we already have a ember app with rootElement equals to "body"
App = Ember.Application.create();

要重新初始化应用,您可以使用reset方法:

App.reset();
相关问题