2014-12-19 7 views
3

Я пытаюсь использовать underscore.js в HTML-файле, размещенном на узле-экспресс-сервере. Этот файл используется для визуализации динамических данных на стороне клиента. Ниже приведены коды:underscore.js с node-express

в app.js:

var cons = require('consolidate'); 
app.engine('html', cons.underscore); 
app.set('view engine', 'html'); 
app.locals._ = require("underscore"); 

в HTML:

var template = _.template($('#client-list-template').html(), {clients: response}); 

здесь "ответ" является JSON

в одном HTML под шаблон сценария

<script id ="client-list-template", type='text/template'> 
     <table class="table striped"> 
      <thead> 
       <tr> 
        <th>ID</th><th></th> 
       </tr> 
      </thead> 
      <tbody> 
       <% _.each(clients, function(client) { %> 
        <tr> 
         <td><%= client.clientID %></td> 
         <td><a class="btn">Edit</a></td> 
        </tr> 
       <% }); %> 
      </tbody> 
     </table> 
    </script> 

Эксплуатация этого ошибки и ошибки в коде:

ReferenceError: clients is not defined

Может кто-то, пожалуйста, помогите мне понять, что такое ошибка и как ее решить. Тот же HTML, размещенный на сервере Apache, отлично работает.

+0

Вы вошли в систему 'response'? похоже, что он может быть не определен –

+2

'_.template' не принимает два аргумента. Он принимает один (шаблон) и возвращает функцию, которая сама принимает один аргумент (данные). – Jack

+1

@Jack Это фактически [принимает два аргумента] (http://underscorejs.org/#template), но второй - это не данные, это настройки для строки шаблона. Но да, Винни, ты должен делать то, что он говорит. – jakerella

ответ

1

Вы пробовали это так?

var template = _.template($('#client-list-template').html()); 
$('.output-div').html(template({ 
    clients : response 
}); 

Также как вы получаете переменную отклика?

Смежные вопросы