如何向通过Handlebars.registerPartial注册的模板片段传递变量?
解决Handlebars注册模板片段的变量传递问题
嘿,我完全懂你遇到的困惑!其实你想实现的变量传递,和你用未通过JS注册的模板片段时的逻辑完全一致——不管partial是预先通过Handlebars.registerPartial注册的,还是直接在模板里引用的,传递变量的方式没有区别。
具体操作方法
你现在调用注册过的partial时只用了{{> data }},这时候partial只会拿到默认的上下文(也就是主模板当前的上下文)。如果要传递特定变量,只需要在调用时显式指定参数:
传递单个变量
如果主模板里有个变量叫mainContextVar,想传给datapartial,调用时这么写:{{> data targetVar=mainContextVar}}之后在你的
datapartial里,就可以用{{targetVar}}来获取这个值了。传递整个主模板上下文
如果想把主模板的所有变量都传给partial,直接用this关键字即可:{{> data this}}
举个实际例子
假设你的主模板代码是这样的:
<div class="main-container"> <h1>欢迎,{{currentUser}}</h1> <!-- 把currentUser传递给注册过的data partial --> {{> data user=currentUser}} </div>
而你通过require加载的data.js里的模板片段是:
<div class="user-card"> <p>当前用户:{{user}}</p> </div>
这样运行后,partial就能正确渲染出主模板传过来的currentUser值了。
为什么之前的逻辑适用?
你通过Handlebars.registerPartial('data', data)做的事情,只是把模板片段缓存到Handlebars的全局环境里,让你可以用data这个名字直接调用它,本质上和直接引用模板文件的partial没有区别——参数传递的逻辑是Handlebars核心的功能,和partial的注册方式无关。
内容的提问来源于stack exchange,提问作者karl
相关产品推荐
相关产品推荐

