我有一个非常简单的Ember.js应用程序,可以在IE和Chrome中正常运行,但在Firefox(9.0.1和10.0)中失败。有什么理由吗?这是代码:
<!doctype html>
<html>
<head>
<title>Template Name</title>
</head>
<body>
<script type="text/x-handlebars" data-template-name="my-template">
{{App.user.name}}
</script>
<div id="container"></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.4.js"></script>
<script type="text/javascript">
window.App = Ember.Application.create();
App.user = Ember.Object.create({
name: 'John'
});
App.view = Ember.View.create({
templateName: 'my-template'
});
App.view.appendTo('#container');
</script>
</body>
</html>
答案 0 :(得分:13)
firefox中的错误是
uncaught exception: Error: <Ember.View:ember143> - Unable to find template "my-template".
这似乎表明模板脚本尚未在应用程序执行时进行评估。解决方案是等待onload。像这样包裹你的appendTo
:
$(function() {
App.view.appendTo('#container');
});
答案 1 :(得分:1)
我刚刚遇到了同样的问题。我发现它是由于Ember依赖于Handlebars引起的。看起来在版本1.0之后,他们删除了Handlebars源代码的包含。添加Handlebars库后,错误就会消失。
答案 2 :(得分:1)
Ember.Application.create({
ready: function() {
App.view.appendTo('#container');
}
});
Tom Whatmore在评论中对此有正确答案。
只有在使用未经授权的ember.js版本时,错误才会显示在javascript控制台中
问题是ember尚未对模板进行评估,因为一旦浏览器命中它就会执行代码,而不是在完全创建ember应用程序之后。