将内容传递给汇编中的嵌套部分

时间:2014-05-08 20:57:01

标签: json handlebars.js assemble

我使用assemble对新网站进行原型设计。

我想大大模仿我的代码,就像布拉德弗罗斯特用他的pattern lab传福音一样。

示例

基本上我想要一个标题部分(" atom"在模式实验室中说话)在英雄部分内使用("分子"):

title.hbs

<h1 class="{{class}}">{{text}}</h1>


hero.hbs

<section class="hero-unit">
    {{!-- image and stuff --}}
    <header class="hero-description">
        {{> title }}
        {{> subTitle }}
    </header>
</section>


英雄部分应该是通用的;我想从每个特定页面的JSON文件传递数据。对于我的页面,我使用提供块的默认布局。例如:

default.hbs

<!DOCTYPE html>
<html>
    <head>
        ...
    </head>
    <body>
        {{#block "hero"}}{{/block}} 
        {{#block "body"}}{{/block}}
    </body>
</html>


myPageWithHero.hbs

{{#extend "default"}}
    {{#content "hero"}}
        {{ >hero }}
    {{/content}}
    {{#content "body"}}
        {{!-- myPageContent --}}
    {{/content}}
{{/extend}}


现在我想通过我的myPageWithHero.json文件在英文部分内部的标题部分内设置{{text}}。那可能吗?或者我的方法(我在这个非常简单的例子中描述过)完全紊乱了?

欢呼任何指针! : - )

1 个答案:

答案 0 :(得分:0)

@polarbirke,因为您要使用myPageWithHero.json中的数据,在呈现page时,myPageWithHero.hbs对象上的数据将可用,因此您可以将该对象传递给hero 1}}偏。这将为该部分设置上下文,title部分将继承该上下文:

{{#extend "base"}}
  {{#content "hero"}}
    {{> hero page}}
  {{/content}}
  {{#content "body"}}
    {{!-- myPageContent --}}
  {{/content}}
{{/extend}}

如果您希望数据中包含其他对象,则可以将其传递出去:

data.json

{
  "title1": {
    "class": "success",
    "text": "Good Title"
  },
  "title2": {
    "class": "error",
    "text": "Bad Title"
  }
}

myPageWithHero.hbs

{{#extend "base"}}
  {{#content "hero"}}
    {{> hero title1}}
  {{/content}}
  {{#content "body"}}
    {{!-- myPageContent --}}
  {{/content}}
{{/extend}}

我希望这会有所帮助,如果您有任何问题,请与我联系。