2013-05-14 8 views
1

Вот мой код:Подчеркивание/Backbone: «_ неопределен»

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Matt's Template</title> 

     <!-- Stylesheets --> 
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/2.1.0/normalize.css" type="text/css" /> 
     <link rel="stylesheet" href="../stylesheets/general.css" type="text/css" /> 

     <style type="text/css"> 
      .dragndrop { 
       position:relative; 
       margin:30px auto; 
       border:4px dashed #000; 
       border-radius: 25px; 
       padding:50px; 
       text-align: center; 
      } 
      table{ 
       width:100%; 
      } 
      tr{ 
       width:100%; 
      } 
      td, th { 
       padding:10px; 
       border:1px solid #000; 
       width:50%; 
       text-align: center; 
      } 
     </style> 
    </head> 
    <body> 
      <section class="container"> 

       <!--<form action="/file-upload" method="post" enctype="multipart/form-data"> 
        <input type="file" name="file" /> 
        <input type="submit" /> 
       </form>-->  
       <form action="/file-upload" class="dropzone dragndrop" id="my-awesome-dropzone"></form>  

       <section id="skills"> 

       </section> 


       <script type="text/template" id="skillsTemplate"> 
        <section> 
         <table> 
          <tr> 
           <th>Skill</th> 
           <th>Value</th> 
          </tr> 
          <% _.each(items, function(item){ %> 
            <tr> 
             <td><%= item.get('name') %></td> 
             <td><%= item.get('value') %></td> 
            </tr> 
          <% }); %> 
          <tr> 
           <td><button id="newSkill">New</button></td> 
          </tr> 
         </table> 
        </section> 
       </script> 
      </section> 

     <!-- Javascript Libraries --> 
     <script type="text/javascript" src="https://raw.github.com/enyo/dropzone/master/downloads/dropzone.min.js"></script> 
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js" ></script> 
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script> 
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone.js"></script> 

     <script type="text/javascript"> 
      SkillsView = Backbone.View.extend({ 
       render : function(){ 
        var template = _.template($('#skillsTemplate').html(), [{ name:"Linux", value:"Test"}]); 

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

      var skillsview = new SkillsView({el : $('#skills') }); 

      skillsview.render(); 


     </script> 
     <!-- My Javscript --> 
    </body> 
</html> 

Единственная важная часть шаблона подчеркивание не работает. Говорят, что '_' на линии: _.each(items, function(item) не определено. Почему это происходит? Я попытался переместить подчеркивание в верхней части страницы, и это не помогло.

ответ

2

я не смог воспроизвести «_ не определен» вопрос, но я нашел еще один вопрос, который вы можете быть запущены в: Вы ссылку на элементах, как переменная items, но вы никогда не говорили _.template вы хотите данные должны быть в items. Используйте литерал объекта в качестве данных:

_.template($('#skillsTemplate').html(), { 
    items: [{ name:"Linux", value:"Test" }] 
}) 

(Кроме того, вы используете item.get('name') когда данные простой объект, а не модель Подчеркивание, но я предполагаю, что было только остаток от исходного кода после того, как вам упростил ваш код для вопроса.)

+0

О, я думаю, я понял, почему это так ... Так что я использую ExpressJS с NodeJS, а express использует механизм рендеринга EJS. Поэтому я думаю, что когда я использую <% %>, он думает, что я обращаюсь к данным, поступающим со встроенного javascript. Вы думаете, что это так? Его получение ошибки на стороне сервера, а не на клиенте. –

+1

@MattHintzke: Да, это звучит правдоподобно. Взгляните на [этот вопрос] (http://stackoverflow.com/q/9021587). – icktoofay

+0

ты босс. Вот почему –