自定义车把.js助手不返回选项.fn
Custom Handlebars.js helper not returning options.fn
我正在尝试在车把中做出if x in JSON
声明。它有效,只是它不返回正确的选项。这是索引.html:
{{#dinsdag}}
{{#each uitval2}}
{{@key}}
{{/each}}
{{#isIn 7 uitval2}}
<p>klopt</p>
{{else}}
<p>mwah</p>
{{/isIn}}
{{/dinsdag}}
这是数据.js:
$(function(){
var templateScript = $("#entry-template").html();
var theTemplate = Handlebars.compile(templateScript);
var context = { "dinsdag": {
"uitval2": {
"7": "1",
"9": "1",
"11": "1"
},}}
var html = theTemplate(context);
$('.test').html(html);
$(document.body).append(html);
})
最后这是助手.js,问题应该出在哪里。
Handlebars.registerHelper('isIn', function(waarde, inWaarde, options){
$.each($.parseJSON(JSON.stringify(inWaarde)), function(k, v) {
if (parseInt(k) === parseInt(waarde)){
console.log("true");
return options.fn(this);
}
});
console.log("false");
return options.inverse(this);
}(;
它确实在控制台中返回True
,但它在呈现的 HTML 中返回else
选项。
您将在 each()
函数中返回,但这不会使您的帮助程序返回 false。
但是,您可以使用each()
之外的标志来确定输出。这样:
Handlebars.registerHelper('isIn', function(waarde, inWaarde, options){
// Start with false assumption
var isTrue = false;
$.each($.parseJSON(JSON.stringify(inWaarde)), function(k, v) {
if (parseInt(k) === parseInt(waarde)){
// Set outer flag
isTrue = true;
// Break loop
return false;
}
});
if (isTrue) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
文档中的更多信息 (http://api.jquery.com/jquery.each/(:
我们可以在特定迭代中打破 $.each(( 循环,方法是使 回调函数返回假。返回非假与 在 for 循环中继续语句;它将立即跳到下一个 迭 代。
相关文章:
- 为什么数据列表选项的id返回空值
- 引导选项卡不适用于历史记录.返回选项
- 在 jquery 选项卡中查找 span 标记并返回该索引
- 选择选项的值将在表单上返回 erro 时丢失
- 当我点击浏览器返回选项时,阻止在php上刷新页面
- 辅助功能键盘专用选项卡到z索引“;返回顶部”;
- 使用jquery取消隐藏或返回多选时的选定选项
- 引导程序3:返回页面刷新的下拉选项卡
- 自定义Div滑块运行过快,但仅当从另一个浏览器选项卡返回时
- Appcelerator 中的自定义选项卡栏 - 如何返回到根窗口
- 纯 JS 获取所选选项数据属性值返回 Null
- select2 - 如果多个选项共享一个值,则返回不正确的选定选项
- 函数,使用 React 返回带有选项的选择
- 自定义车把.js助手不返回选项.fn
- 如何在 asp.net 中使用角度选项卡返回上一页
- 对多个选项进行筛选数组以在新选择中返回选项
- 如何在javascript或jquery中跟踪浏览器刷新/返回/选项卡关闭和浏览器关闭事件
- 烬.js +烬数据返回选项文件:///C:/posts net::ERR_FILE_NOT_FOUND加载
- 试图返回选项文本而不是值作为循环的一部分
- 当$http service返回选项列表时,Ng-option不工作