Как переданная переменная мопсу доступна в скрипте мопса? - PullRequest
2 голосов
/ 30 мая 2020

Сейчас я занимаюсь веб-разработкой, по сути, это первое, над чем я работаю. Я пытаюсь передать переменную из своего основного приложения, например

app.get('/',(req,res)=>{
    getdata().then(record=>{
        res.render("index",{title:'Login',users:record})
    })        
})

Затем в моем файле index.pug переменная доступна везде, кроме моего сценария, например

form()
          input(type="text", class='normal',id='uname', placeholder = 'Username')
          input(type="password", class='normal',id='password', placeholder='Password')
          input(type="submit", class='submit',value="Login",onclick="checkaccount(users)")
script.
    function checkaccount(users){
      let user=document.getElementById('uname').value
      let password = document.getElementById('password').value
      console.log(users)
    } 

код выиграл Я думаю, не выполняется, потому что переменная пользователя не определена. ** переменная пользователя - это массив массива с форматом array (a, b), это работает, когда я использую

each val in users
    p.
        val

в другом месте из моих скриптов.

1 Ответ

1 голос
/ 30 мая 2020

script. означает, что все последующее интерпретируется как буквальное. вы все еще можете использовать код, но синтаксис отличается:

script.
    var users = JSON.parse('#{JSON.stringify(users)'});
    function checkaccount(/*set users elsewhere*/){
      let user=document.getElementById('uname').value
      let password = document.getElementById('password').value
      console.log(users)
    } 

на самом деле это не очень хорошая идея, лучше использовать библиотеку сериализации, но идея состоит в том, что вам нужно сериализовать ее, а затем сказать put, чтобы получить строковый литерал '#{}' из выражения #{}, а затем проанализировать его во внешнем интерфейсе (JSON.parse('#{}')). Вам нужно будет JSON.stringify().replace(/'/g, "'"), чтобы исключить одинарную кавычку в одном из ваших данных, чтобы сломать это решение.

во внешнем интерфейсе, с объектом {'hello': "world's"}:

- var myvalue = JSON.stringify(obj).replace(/'/g, "\\'");
JSON.parse('#{myvalue}')

становится

JSON.parse('{"hello":"world\'s"}');
...