【问题标题】:Multiline unbuffered code in jade templates玉模板中的多行无缓冲代码
【发布时间】:2016-03-02 03:30:41
【问题描述】:

我正在尝试编写一个呈现双索引数组的模板。所以我开始写这个:

- var grid = [[1, 0, 1], [0, 1, 0]];
each row in grid
    each cell in row
        if cell
            span x
        else
            span o

但这不是我想要编写数组的方式 我想这样写:

- var grid = [[1, 0, 1],
              [0, 1, 0]];

这不起作用,因为jade已经超出了内联javascript

- var grid = [[1, 0, 1],
             - [0, 1, 0]];

这不起作用,因为翡翠认为那两行不正确而不是一行

我怎样才能让它工作?

【问题讨论】:

    标签: node.js pug


    【解决方案1】:

    更新:现在使用 Jade 1.11.0 为我工作的多行定义。即使是嵌套的 JSON 现在也能发挥作用。

    -
      projects = [{
        title: "Project 1",
        classname: "project1",
        slides: [{
          title: "Slide 1"
          img: "images/hello.png"
        },{
          title: "Slide 2"
          img: "images/world.png"
        }]
      }, {
        title: "Project 2",
        classname: "project2",
        slides: [{
          title: "Slide 3"
          img: "images/fun.png"
        },{
          title: "Slide 4"
          img: "images/things.png"
        }]
      }]
    

    【讨论】:

      【解决方案2】:

      编辑:是的,这些是真实的!去看看其他答案如何解决这个问题。

      遗憾的是,目前这在 Jade 中是不可能的。 TJ(维护者)表示他不关心这一点,但会欢迎功能请求。 https://github.com/visionmedia/jade/issues/796

      幸运的是,您可以在 JS 文件中声明数组并将其作为变量传递给 Jade。

      【讨论】:

      • 好的。你能举个例子吗?如果我将一个变量放入一个 js 文件中,该变量会在编译过程中被包装到一个函数定义中(我认为它是一个模块然后......)。我用早午餐和玉。我怎样才能直接包含一个js(或jade中的JSON文件)?
      • @NerDoc 这种事情(将变量传递给 Jade)包含在文档中:jade-lang.com/reference
      • 啊啊啊。我一定忽略了,includes 确实包含封面文本 - 所以如果我理解正确,我可以使用script \n include blah.js 将变量直接放在当前文件中,对吧?
      • 这不起作用。当我包含一个包含 var blah = 5; 的文件时,我无法从父文件中访问变量 blah。我的 Js 不流利(你可能会想)...你能在这里给我一个提示吗?
      • @NerDoc 我假设您指的是在您之前的评论中将其包含在脚本标记中?然后不 - 该变量在编译时对 Jade 不可用。相反,它将在浏览器的上下文中声明。 Jade 是一种令人惊叹且美丽的 IMO 模板语言,但它也很容易让自己陷入这种稍微混乱的情况。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 2012-07-11
      • 2014-01-17
      • 2013-10-08
      • 2011-12-08
      相关资源
      最近更新 更多