Handlebars中的交错关闭标签错误(Ember.js)

时间:2014-11-14 20:00:49

标签: ember.js handlebars.js

我最近决定尝试Ember.js。

我设置了一个小应用程序,但我无法工作。

我有一个app.html文件

<!doctype>
<html>
    <head>
        ...
    </head>
    <body>
        <script type="text/x-handlebars">
            ...
        </script>
    </body>
</html>

现在,当然,这不会呈现任何东西。我包括handlebars.js,ember.js和app.js,现在一切都正确呈现。

问题在于,当我尝试使用花括号添加内容时,输出为空白。例如,如果我在我的JS文件中设置了一些变量并希望在我的应用程序中显示它,例如<h1>{{title}}</h1>,我会得到<h1></h1>。当我尝试放置{{input value="Username"}}时,不会显示任何内容。

我没有收到任何错误消息,除非我使用结束标记。例如,这个

{{#link-to "http://google.ca"}}Link{{/link-to}}

将使我的整个网页显示

line 117: interleaved closing tag: link-to

我不知道出了什么问题。即使使用Google搜索错误消息也无济于事。

任何提示?ç

更新

此代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Ember Starter Kit</title>
        <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/normalize/2.1.0/normalize.css">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v1.3.0.js"></script>
        <script src="http://builds.emberjs.com/tags/v1.8.0/ember.js"></script>
        <script type="text/javascript">
            App = Ember.Application.create();
            App.Router.map(function() {
                // put your routes here
            });
            App.IndexRoute = Ember.Route.extend({
                model: function() {
                    return ['red', 'yellow', 'blue'];
                }
            });
        </script>
    </head>
    <body>
        <script type="text/x-handlebars">
            <h2>Welcome to Ember.js</h2>
                {{outlet}}
        </script>
        <script type="text/x-handlebars" data-template-name="index">
                <a href="http://google.ca">Link</a>
                <ul>
                    {{#each item in model}}
                        <li>{{item}}</li>
                    {{/each}}
                </ul>
        </script>
    </body>
</html>

使用以下错误消息呈现空白页:

line 36: interleaved closing tag: each

我不确定这是否正常。

2 个答案:

答案 0 :(得分:0)

link-to仅适用于ember路由。 (http://emberjs.com/guides/templates/links/

在你的情况下,我只是直接在模板中为链接编写html。

这是一个带有google.ca链接的小样本ember.js应用程序,我觉得你的html可能无法通过插座和模板正确设置:

http://emberjs.jsbin.com/qivunivabo/3/edit

答案 1 :(得分:0)

我发现了问题,这真的很愚蠢。

我的HTML文件由一个框架提供,该框架使用Mustache作为其模板引擎(服务器端),因此在将输出发送到broswer之前它会呈现所有{{something}}标记。

:/