您好我的页面如下:
---
title: Coffee
replace: true
---
{{> products-list-style}}
和我的部分“产品列表式”如:
{{#if ../replace}}Replace{{else}}Add to Cart{{/if}}
我是车把的新手,所以我不确定嵌套条件。我尝试了../../并在我的页面中使用“this”这个词作为第二个参数,但没有任何效果。有帮助吗?是否可以将参数从页面嵌套到部分?
答案 0 :(得分:1)
是的,上下文从父模板传递到partials,但只传递到包含partial的本地上下文。部分人无法访问其上下文的父级。
传递整个父模板上下文的简单示例,可直接访问属性:
var model = {
title: 'Coffee',
replace: true
}
handlebars.registerPartial('products-list-style',
'{{#if replace}}Replace{{else}}Add to Cart{{/if}}')
var template = handlebars.compile(
'{{title}}, {{replace}}, {{> products-list-style}}')
console.log(template(model))
收率:
Coffee, true, Replace
使用item
帮助程序仅传递父模板上下文的with
部分的示例:
var model = {
pageTitle: 'My coffee page',
item: {
title: 'Coffee',
replace: true
}
}
handlebars.registerPartial('products-list-style',
'{{#if replace}}Replace{{else}}Add to Cart{{/if}}, ' +
'this: {{.}}, parent: {{..}}, page title: {{../pageTitle}}')
var template = handlebars.compile(
'{{pageTitle}}\n' +
'{{#with item}}{{title}}, {{replace}}, {{> products-list-style}}{{/with}}')
console.log(template(model))
收率:
My coffee page
Coffee, true, Replace, this: [object Object], parent: , page title:
可以直接访问item
属性,但部分无法访问其上下文的父级。
使用Handlebars 1.3.0和2.0.0时,此行为相同。