【问题标题】:Error 'Uncaught SyntaxError: Unexpected token < in underscore.js'错误'Uncaught SyntaxError: Unexpected token < in underscore.js'
【发布时间】:2013-01-16 06:00:43
【问题描述】:

这是我的代码,

HTML:

<script type="text/html" id="test_temp">
    <div class="row" id="opportunityList">
        <% _.each(ops, function(option){
            <div class="span12">
                <div class="well basicInformation">
                    <div class="row">
                        <div class="span4 opportunityName" >
                            <h4><%= option.company_name %></h4>
                        </div>
                        <div class="span4 pull-right">
                            <ul class="inline">
                                <li class="dealGrade">
                                    <span><%= option.dealGrade %></span>
                                    <span class="subheader">Deal Grade</span>
                                </li>
                                <li class="estimateddevices">
                                    <span><%= option.devices %></span>
                                    <span class="subheader">Devices</span>
                                </li>
                                <li class="accountValue">
                                    <span><%= option.accountValue %></span>
                                    <span class="subheader">Account value</span>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        });
        %>
    </div>
</script>

脚本:

testView = Backbone.View.extend({
    initialize: function(){
        this.render();
    },

    render: function(){
        var ops = [
            {dealGrade: '50%', devices: 123, accountValue: '20%', company_name: 'Kyocera', rep_name: 'James Kogg', rep_designation: 'Sales Rep', proposalCount: 2},
            {dealGrade: '75%', devices: 215, accountValue: '41%', company_name: 'Flipkart', rep_name: 'Christina Kogg', rep_designation: 'MD', proposalCount: 0}
        ]

        var template = _.template($("#test_temp").html(), ops);

        this.$el.append(template);
    }
});

var test_view = new testView({ el: $("#viewport .container") });

我收到此错误消息:

Uncaught SyntaxError: Unexpected token

我做错了什么?

【问题讨论】:

    标签: backbone.js underscore.js template-engine


    【解决方案1】:

    您没有关闭_.each 周围的&lt;% 或打开_.each 的关闭}); 的模板标签:

    <script type="text/html" id="test_temp">
       <div class="row" id="opportunityList">
         <% _.each(ops, function(option){ %>
           ...
         <% }); %>
       </div>
    </script>
    

    Underscore 的模板引擎非常简单,它只是进行一些简单的文本处理,将您的模板从里到外转换为 JavaScript 代码。

    此外,模板函数希望其数据为键/值对(即 JavaScript 对象),因此您需要为您的 ops 命名:

    var template = _.template($("#test_temp").html(), { ops: ops });
    

    【讨论】:

    • 哇,好吧,这是奇怪的语法,已经解决了,但现在它说 ops 没有定义
    • 仍然无法正常工作,出现同样的错误,我的脚本文件是在#test_temp 之后加载的,这是正确的还是我需要更改它?
    • 不应该是{ ops: ops },而不是{ opts: ops }吗?
    • @Lukas:好的,谢谢,我的手指并不总是能输入大脑认为应该输入的内容 :)
    【解决方案2】:

    我遇到了类似的错误

    Uncaught SyntaxError: Unexpected token var 在新函数 () 在 Function._.template

    那是因为在我的模板中,我在 &lt;%= 中写了一个 js 语句,而不是 &lt;%

    所以要确保你的模板的语法是正确的

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      相关资源
      最近更新 更多