HandleBars中自定义helper方法

2024-03-31 05:38

本文主要是介绍HandleBars中自定义helper方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

handleBars之所以提供helper的自定义,在于其较弱的逻辑判断,其自身仅可以true/false的判断,对于其他==、>=、<等运算符或运算表达式num%2等均不支持,需自己定义所需的helper,下面将详细说明基本语法。
helper自定义基本语法:
  • 简单helper
    Handlebars.registerHelper('扩展函数名,例如,formaterNum',  function(num, options){
           num = num + '';
          
    return num.replace(/(?=(?!^)(?:\d{3})+(?:\.|$))(\d{3}(\.\d+$)?)/g,',$1');

    });
    然后就可以在模板中使用{{formaterNum param1}}
  • helper块
    例如,偶数判断:
    helper定义
    Handlebars.registerHelper('isEven', function(value, options){
         console.log('value:', value);
         console.log('this', this);//
    其中this为上下文主题, 也就是传入的数据对象,输出为:this: Object {num: 2}
         console.log('options.fn(this):',
    options.fn(this));//其中options.fn为填入真实数据的模板中if语句内容,输出为:options.fn(this):2是偶数 
         
    console.log('options.inverse(this)',options.inverse(this));//其中options.inverse为填入真实数据的模板中else语句内容,此处因为2为偶数即不走此分支
         if (value % 2 == 0) {
             return options.fn(this);
         } else {
             return options.inverse(this);
         }
    });
    模板定义
    {{#isEvent num}}
        {{num}}是偶数
    {{else}}
        {{num}}是奇数
    {{/isEvent}}
    传入模板的数据对象
    {
       num: 2
    }
    这里特别说明下options.fn和options.inverse两个方法,options.fn将传入的this,即传入的数据对象{num: 2},编译到我们提供的模板中,再将编译后的结果(2是偶数)返回;而options.inverse方法则编译else部分的内容,这里由于我们传入的对象中num是2,不走else部分。


参考文档:
基础文档:http://keenwon.com/992.html        http://www.ghostchina.com/introducing-the-handlebars-js-templating-engine/
进阶文档:https://www.cnblogs.com/lvdabao/p/handlebars_helper.html         http://blog.csdn.net/azureternite/article/details/53160380  

这篇关于HandleBars中自定义helper方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/863540

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详