Почему Pug не может перебирать некоторые из моих массивов / объектов, которые взяты из дочернего шаблона? - PullRequest
1 голос
/ 24 июня 2019

Итак, у меня есть файл с именем base-default.pug, который устанавливает мой тег head и body.У меня есть файл, который расширяет его, называется index.pug.Он содержит только два объекта Javascript:

localHeadProps: объект информации для тега head, специфичный для index.html, который я хочу сгенерировать scriptPaths: массив относительных путей к файлу сценария для включения в конец телаtag.

Когда я пытаюсь использовать цикл each ... in для localHeadProps, он работает, но для scriptPaths я получаю сообщение о том, что оно не определено.Это странно, потому что при использовании !{scriptPaths} содержимое выводится просто отлично, так как же его нельзя определить?

Может кто-нибудь объяснить, почему цикл каждый ... in работает только для localHeadProps в base-default.pug, но недля scriptPaths или любого другого массива / объекта, который я помещаю в index.pug?

Что странного в том, что для того, чтобы он работал, я должен предшествовать ему оператором if, проверяющим, что он существует, или использоватьJavascript для ... в цикле.Тем не менее, я до сих пор не понимаю, почему я должен прибегать к этим взломам.

index.pug

extend base-pages/base-default

block localVariables
  -
    //- page-specific head configurations
    const localHeadProps = {
      title: "Best Note Taking App - Organize Your Notes with Evernote",
      description: "Our note taking app helps you capture and prioritize ideas, projects and to-do lists, so nothing falls through the cracks. Start your free trial today!",
      keywords: "HTML, CSS, XML, JavaScript",
      stylesheetPaths: [
        "css/styles.min.css",
      ]
    };
    const scriptPaths = [
      "js/bundle.js",
      "js/vendor.js",
    ];

base-default.pug

include ../abstracts/variables
include layout/head

block localVariables

doctype html
html(lang="en")
  +head(globalHeadProps, localHeadProps)
  body
    h1 Hello Base Page
    //- outputs <p>scriptPaths: js/bundle.js,js/vendor.js</p>
    p scriptPaths: !{scriptPaths}

    //- this doesn't work
    each scriptPath in scriptPaths
      script(src=scriptPath)

    //- this actually works
    each item in localHeadProps
      p=item

1 Ответ

0 голосов
/ 10 июля 2019

Пожалуйста, обновите мопса до последней версии.
Я успешно скомпилировал ваши шаблоны с помощью pug v.2.0.4 и pug-cli v1.0.0-alpha6.

Более того, я предполагаю, что вы не изменяете переменную scriptPaths внутри head mixin.

...