Jade не может прочитать переменную в файле Jade - PullRequest
0 голосов
/ 22 февраля 2019

Я использую express.js + jade и у меня проблема с чтением переменных.

/ index.js

var boardgame={
grids:['a','b','c'],
winer: 'No'
}
var jfile=JSON.stringify(boardgame);
res.render('index2', { title: 'Tic Tac Toe', date: today, player: name, gb:jfile});

/ index.jade

script(type='text/javascript').
        // Pass as regular array here
        var inews = JSON.parse('!{gb}')
        var grids = inews.grids
        var grid1 = grids[0]
        var winner = inews.winer
        var ha ="a"
        console.log(winner);
h1= grid1
h1= ha

Там нет ничего, чтобы показатьв сети, но есть «Нет» от победителя в консоли.Я действительно не знаю, в чем проблема сейчас.

Пожалуйста, помогите.Спасибо.

1 Ответ

0 голосов
/ 22 февраля 2019

Вы путаете выполнение pug на стороне сервера и выполнение на стороне клиента.

Когда у вас есть тег script. в вашем шаблоне pug, все, что там, будет отправлено в браузер и будетвыполняется там, если он сформирован правильно.

Когда вы используете знак равенства в теге, таком как h1= grid1, который будет оцениваться pug на сервере.

Итак, выпытаются получить доступ к переменной на стороне клиента (grid1) в контексте на стороне сервера.Эта переменная не существует в pug и будет отображать undefined, поэтому вы ничего не получаете в окне браузера.

Вам нужно будет передать фактический объект вместо строковой версии в шаблончтобы отобразить его так, как вы хотите:

res.render('index2', { title: 'Tic Tac Toe', date: today, player: name, gb:boardgame});

Затем вы можете сделать это в своем шаблоне pug, поскольку переменная будет доступна для контекста выполнения шаблона:

h1= gb.grids[0]
...