把手 - 部分嵌套状态

时间:2014-12-12 15:32:39

标签: html handlebars.js

您好我的页面如下:

---
title: Coffee
replace: true
---
{{> products-list-style}}

和我的部分“产品列表式”如:

{{#if ../replace}}Replace{{else}}Add to Cart{{/if}}

我是车把的新手,所以我不确定嵌套条件。我尝试了../../并在我的页面中使用“this”这个词作为第二个参数,但没有任何效果。有帮助吗?是否可以将参数从页面嵌套到部分?

1 个答案:

答案 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时,此行为相同。