handlebars.js - 通过汇编使用多个数据/json文件时,主模板中{{title}}的上下文

标签 handlebars.js assemble

我正在将assemble.io用于一个简单的静态网站,但是{{title}}标签存在问题。这是该问题的粗略概述。

这是我的 layout.hbs :

<!DOCTYPE html>
<html>
  <head>
    <title>{{title}}</title>
  </head>
  <body>
    <!-- the body tag is used to "pull in" content from pages -->
    {{> body }}
  </body>
</html>

我有2个用于数据的json文件:

foo1.json
{
  "title": "Hello world I am title 1"
}

foo2.json
{
  "title": "I am a different title"
}

我有2页:

foo1.hbs
{{#foo1 }} 
 {{> module1 }}
 {{> module2 }}
 {{> module3 }}
{{/foo1 }}

foo2.hbs
{{#foo2 }} 
 {{> module1 }}
 {{> module2 }}
 {{> module3 }}
{{/foo2 }}

我的 gruntfile.js 代码段:
options: {
  layout: "src/responsive/layouts/layout.hbs",
  partials: 'src/responsive/modules/**/*.hbs',
  data: 'src/responsive/data/**/*.json',
  flatten: false
},
pages: {
  expand: true,
  cwd: 'src/responsive/pages',
  src: '**/*.hbs',
  dest: 'src/'
}

当我运行“grunt assemble”时,没有页面标题。我认为这与上下文有关,好像我将layout.hbs中的{{title}}更改为{{foo1.title}}{{foo2.title}}一样有效,但是随后两个页面都使用相同的标题,因为它们共享此模板。

如何使layout.hbs中{{title}}的上下文对传递的所有json文件有效?

一种。

最佳答案

@Adi我设置了一个repo here,其中包含您描述的结构。

我刚刚更改了this code in layout.hbs,并且按预期方式工作。

<!DOCTYPE html>
<html>
  <head>
    <title>{{page.title}}</title>
  </head>
  <body>
    <!-- the body tag is used to "pull in" content from pages -->
    {{> body }}
  </body>
</html>

如果您有一份 repo 单,我们可以看一下,它可能有助于找出问题所在。

希望这可以帮助。

关于handlebars.js - 通过汇编使用多个数据/json文件时,主模板中{{title}}的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906612/

相关文章:

javascript - Ember Data deleteRecord() 后跟 rollback() - 如何使对象重新出现在列表中?

javascript - ember.js hbs TextFieldView 中的 View 助手

javascript - 如何检测{{#each pages}}中的页面是否为当前页面?

assemble - 如何在 assemble 中重用代码(html + Handlebars )来显示分类列表?

javascript - 如何提供指向 'next post' 的链接

javascript - 如何使用不同的 Controller 更新 Ember.js 中的 hasMany?

ember.js - Ember 禁用按钮

javascript - 从简单的 Backbone 到 Marionette

yaml - 如何在 YAML 前端使用 Handlebars #each helper

gruntjs - 使用 assemble 转义部分