未定义车把助手。
Handlebars helper is not defined.
我有 div 显示来自 mysql 数据库的内容。内容太长,所以我决定使用 Handlebar 助手。这是我的 html 代码:
<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}}
Handlebar Helper 放置在 index.js 文件中,如下所示:
Handlebars.registerHelper('substr', function(length, context, options) {
if ( context.length > length ) {
return context.substring(0, length) + "...";
} else {
return context;
}
});
当我 运行 nodejs 服务器时,我收到 "Handlebar is not defined" 错误。我安装了 express-handlebar 包,并在 index.js 文件中将其声明为
var Handlebar = require('express-handlebars');
但是还是不行。
您需要使用 Handlebars
作为变量名,而不是 Handlebar
。
此外,关于助手的官方 express-handlebars 文档建议在 exphbs.create
下定义助手。
所以服务器上带有 helper 的代码应该是这样的:
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;
}
}
}
});
好吧,这不是 "right" 答案,但它使问题得以解决。我用 CSS 让它工作。只是我为段落标记添加了一个 ID 作为 "test" 并在 style.css 文件中分配 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 */
}
我有 div 显示来自 mysql 数据库的内容。内容太长,所以我决定使用 Handlebar 助手。这是我的 html 代码:
<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}}
Handlebar Helper 放置在 index.js 文件中,如下所示:
Handlebars.registerHelper('substr', function(length, context, options) {
if ( context.length > length ) {
return context.substring(0, length) + "...";
} else {
return context;
}
});
当我 运行 nodejs 服务器时,我收到 "Handlebar is not defined" 错误。我安装了 express-handlebar 包,并在 index.js 文件中将其声明为
var Handlebar = require('express-handlebars');
但是还是不行。
您需要使用 Handlebars
作为变量名,而不是 Handlebar
。
此外,关于助手的官方 express-handlebars 文档建议在 exphbs.create
下定义助手。
所以服务器上带有 helper 的代码应该是这样的:
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;
}
}
}
});
好吧,这不是 "right" 答案,但它使问题得以解决。我用 CSS 让它工作。只是我为段落标记添加了一个 ID 作为 "test" 并在 style.css 文件中分配 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 */
}