Tri*_*ash 2 templates handlebars.js gruntjs assemble
使用Grunt.js 0.4和Assemble 0.3.78
如何从循环内部访问"page.filename"全局变量?
(调试)
<ul>
{{#mysite.menu}}
<li>{{page.filename}}</li>
{{/mysite.menu}}
</ul>
Run Code Online (Sandbox Code Playgroud)
(实际上)建立一个菜单,试试这个:
{{#mysite.menu}}
<li {{#is page.filename url}} class="on" {{/is}}>{{name}}</li>
{{/mysite.menu}}
Run Code Online (Sandbox Code Playgroud)
其中url和name各自的属性mysite.menu
jon*_*ert 10
获得比您提供的信息更多的信息会有所帮助,例如您正在使用的数据示例.但如果可以,我会尽力回答.澄清,page并且filename在Assemble中都是内置的"助手"/变量,filename是几个"路径"助手之一,这里有一些其他的:
path/to/variables.md.用法:{{dirname [path]}}variables.md.用法:{{filename "docs/toc.md"}}pagename.variables用法:{{base "docs/toc.md"}}.md用法:{{extension "docs/toc.md"}}extension.{{relative [from] [to]}}.这些可以page像这样使用:
{{page.dest}}
{{page.absolute}}
{{page.dirname}}
{{page.filename}}
{{page.pagename}}
{{page.basename}}
{{page.extname}}
{{page.ext}}
Run Code Online (Sandbox Code Playgroud)
或者,根据具体情况和您的需要:
{{this.dest}}
{{this.dirname}}
{{this.filename}}
{{this.pagename}}
{{this.basename}}
{{this.extname}}
{{this.ext}}
Run Code Online (Sandbox Code Playgroud)
当您{{#each}}在示例中使用块内的模板时,您需要添加../以上升级别的上下文:
{{../page.dest}}
{{../page.absolute}}
{{../page.dirname}}
{{../page.filename}}
{{../page.pagename}}
{{../page.basename}}
{{../page.extname}}
{{../page.ext}}
Run Code Online (Sandbox Code Playgroud)
或者,再次取决于您页面上的其他内容.(我不知道其余模板中有多少嵌套,等等)
{{../dest}}
{{../absolute}}
{{../dirname}}
{{../filename}}
{{../pagename}}
{{../basename}}
{{../extname}}
{{../ext}}
Run Code Online (Sandbox Code Playgroud)
我的建议是你只需将我列出的所有模板复制/粘贴到页面中并构建它.然后查看结果并查看哪些模板正在工作,它应该可以帮助您开始围绕模板的工作方式包装大脑.带把手的上下文一开始很混乱,但希望这会有所帮助.
此外,如果您在此之后仍然遇到问题,可以查看一些"汇编示例"回购并尝试在没有任何这些帮助程序的情况下首先构建模板/页面.然后提交你的工作并介绍助手,但不是一次只有一两个助手,当我学习的时候我开始在页面上添加几十个帮助器,以加快查看输出中发生的事情的过程,什么破坏了,看看差异,看看有什么变化.等等
如果这至少让你到达某个地方,请告诉我.我很乐意继续帮忙.