2016-10-15 3 views
0

У меня есть div, который отображает содержимое из базы данных mysql. Содержимое слишком длинное, поэтому я решил использовать помощники Handlebar. Вот мой HTML-код:Handelbers helper не определен.

<div class="row"> 
    {{#if news}} 
     {{#each news}} 

      <div class="col-md-4 img-portfolio"> 
       <a href="/news-details/{{id}}"> 
        <img class="img-responsive img-hover small-img" src="/images/news/{{image}}" alt=""> 
       </a> 
       <h3> 
        <a href="/news-details/{{id}}">{{title}}</a> 
       </h3> 
       <p> {{substr "10" text}} </p> 
      </div> 
      {{/each}}   
    {{else}} 
    <p>No News</p> 
{{/if}} 

рулю Помощник помещается в index.js файл следующим образом:

Handlebars.registerHelper('substr', function(length, context, options) { 
    if (context.length > length) { 
     return context.substring(0, length) + "..."; 
    } else { 
     return context; 
    } 
}); 

Когда я запускаю сервер nodejs, я получаю «Handlebar не определенную "ошибку. Я установил пакет экспресс-руля, а также объявили его на index.js файл в

var Handlebar = require('express-handlebars'); 

Но она по-прежнему не работает.

ответ

0

Ну, это не «правильный» ответ, но он сделал, что проблема будет решена. Я использовал CSS, чтобы он работал. Просто я добавил идентификатор в качестве «теста» для тега абзаца и назначил css в файле style.css следующим образом:

#test { 
-o-text-overflow: ellipsis; /* Opera */ 
text-overflow: ellipsis; /* IE, Safari (WebKit) */ 
overflow:hidden;    /* don't show excess chars */ 
white-space:nowrap;   /* force single line */ 
width: 350px;     /* fixed width */ 
} 
1

Вы должны использовать Handlebars как переменное имя вместо Handlebar.

Кроме того, официальная express-handlebars документация для помощников предлагает определить помощников под exphbs.create.

Поэтому код с помощником на сервере должен быть как:

var exphbs = require("express-handlebars"); // you can use any variable name 

var hbs = exphbs.create({ 
    helpers: { 
    substr: function(length, context, options) { 
     if (context.length > length) { 
     return context.substring(0, length) + "..."; 
     } else { 
     return context; 
     } 
    } 
    } 
}); 
+0

Как это сделать? – GoGo

+0

@ Karatay отредактировал ответ, чтобы отразить регистрацию вспомогательной документации по документам express-handlebars. Для использования см. Раздел [Использование] (https://github.com/ericf/express-handlebars#basic-usage) документации express-handlebars. –

+0

Да, я пробовал это, но он продолжает говорить «Недостающий помощник»: «substr». У меня есть последняя версия express-handlebars и express. – GoGo