为什么这个Ember.js应用程序在Firefox中失败?

时间:2012-02-10 04:06:11

标签: ember.js

我有一个非常简单的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>

3 个答案:

答案 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应用程序之后。