猿问

handlebars.js{#if}条件中的逻辑运算符

handlebars.js{#if}条件中的逻辑运算符

JS中是否有一种将逻辑运算符合并到标准handlebars.js条件运算符中的方法?就像这样:

{{#if section1 || section2}}.. content{{/if}}

我知道我可以写我自己的助手,但首先我想确保我没有重新发明车轮。


烙印99
浏览 2861回答 3
3回答

潇湘沐

再往前走一步。这将添加比较运算符。Handlebars.registerHelper('ifCond',&nbsp;function&nbsp;(v1,&nbsp;operator,&nbsp;v2,&nbsp;options)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(operator)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'==': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;==&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'===': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;===&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'!=': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;!=&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'!==': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;!==&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'<': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;<&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'<=': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;<=&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'>': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;>&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'>=': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;>=&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'&&': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;&&&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'||': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(v1&nbsp;||&nbsp;v2)&nbsp;?&nbsp;options.fn(this)&nbsp;:&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;options.inverse(this); &nbsp;&nbsp;&nbsp;&nbsp;}});在这样的模板中使用它:{{#ifCond&nbsp;var1&nbsp;'=='&nbsp;var2}}咖啡脚本版本Handlebars.registerHelper&nbsp;'ifCond',&nbsp;(v1,&nbsp;operator,&nbsp;v2,&nbsp;options)&nbsp;-> &nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;operator &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'==',&nbsp;'===',&nbsp;'is' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;is&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'!=',&nbsp;'!==' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;!=&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'<' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;<&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'<=' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;<=&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'>' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;>&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'>=' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;>=&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'&&',&nbsp;'and' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;and&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;'||',&nbsp;'or' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;if&nbsp;v1&nbsp;or&nbsp;v2&nbsp;then&nbsp;options.fn&nbsp;this&nbsp;else&nbsp;options.inverse&nbsp;this &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;options.inverse&nbsp;this
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答