如何解决我无法注册缺少的车把帮手
我无法注册缺少的把手助手
下面的代码为您显示页面中的条件块:
<table class="table table-striped sorting">
<thead>
<tr class="home">
<th>Title</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
{{#each pages}}
<tr id="id_{{this._id}}" class="{{this.slug}}">
<td>{{this.title}}</td>
<td><a href="/admin/pages/edit-page/{{this._id}}">Edit</a></td>
{{#checkhomepage home}}
<td></td>
{{else}}
<td><a class="confirmDeletion" href="/admin/pages/delete-page/{{this._id}}">Delete</a></td>
{{/if}}
</tr>
{{/each}}
</tbody>
</table>
下面的代码为您展示了我的脚本代码块:
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
<script>
$('tbody').sortable({
placeholder: "ui-state-hightlight",update: function () {
var ids = $('tbody').sortable("serialize");
var url = "/admin/pages/reorder-pages";
$.post(url,ids);
}
});
Handlebars.registerHelper('checkhomepage',function (home) {
if(this.title == home){
return true;
}else{
return false;
}
});
});
</script>
在app.js中
// view engine
var expressHbs = require('express-handlebars');
var app = express();
app.set('views',__dirname + '/views/');
app.set('view engine','handlebars');
var hbs = require('handlebars');
hbs.registerHelper("HelperMissing",function(value,options)
{
return parseInt(value) + 1;
});
app.engine('handlebars',engines.handlebars);
ReferenceError:未定义引擎 app.js中的引擎如何解决此问题
解决方法
您正在尝试创建车把Block Helper,但是您遇到了一些问题。
在模板中,您具有以下内容:
{{checkhomepage home}}
<!-- Home stuff -->
{{else}}
<!-- Non-Home stuff -->
{{/if}}
这将不起作用,因为:
-
阻止助手必须在帮助者名称之前的开始标记中以“#”开头。
-
模板中的开始和结束帮助器标记必须匹配,即。 {{#checkhomepage主页}} {{else}} {{/ checkhomepage}}`。
-
您正在将
home
的值传递给您的助手。但是,当前上下文中不存在home
值,因此该值可能是undefined
。也许您想传递字符串"home"
,在这种情况下,您需要使用引号:{{#checkhomepage 'home'}}
。
接下来,为了使块帮助程序起作用,您需要使用options
参数。特别是,options
arg具有一个fn
函数,它将呈现嵌套在该块内的模板,以及一个inverse
函数,它将呈现嵌套在else块中的内容。 / p>
以下是使用这些options
函数重写的帮助程序。 (为清楚起见,我也将home
arg重命名为title
:
Handlebars.registerHelper('checkhomepage',function (title,options) {
if (this.title === title) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
我创建了一个fiddle供您参考。
,现在我解决了我的问题 过去,我没有在正确的位置中设置注册助手 我将发布该代码以查看它
在app.js中,将助手设置为这样的hbs调用者
// view engine setup
app.engine('.hbs',expressHbs({defaultLayout : 'layout',extname : '.hbs',helpers : {
checkhomepage: function (title,options) {
if (this.title === title) {
return options.fn(this);
} else {
return options.inverse(this);
}
},
如果您在app.engine(.......,helper:{//在这里像上面那样设置功能助手)中看到设置助手功能
最后一个要说谢谢的76484 :)是因为他也帮助我解决了这个问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。