2013-01-16 95 views
0

这里是我的代码,错误 '未捕获的SyntaxError:意外的标记<在underscore.js'

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> 

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 < in underscore.js

我在做什么错?

回答

4

你不关闭<%_.each周围或打开该模板标记为_.each收盘});

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

下划线的模板引擎是非常简单的头脑,它只是做了一点简单的文字争相将您的模板翻译成JavaScript代码。

此外,模板函数希望其作为键/值对数据(即JavaScript对象),所以你需要给你的ops一个名字:

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

whoaa,OK,这是奇怪的语法,即得到解决,但现在它说'ops'没有定义 –

+0

@badZoke:请看看更新。 –

+0

仍然不工作,得到相同的错误,我的脚本文件在'#test_temp'之后加载,是正确的还是我需要改变它? –

相关问题