首页 > 解决方案 > 如何使用 JavaScript 动态更改翡翠变量?

问题描述

例如在我的文件 index.jade 我有:

extends layout

block varScope
  -var selected = 'Home';
  -var isEmpty = 'false';
  
body
   button(onclick='changeState()') Click
  
   script.
     function changeState(){
       // change isEmpty variable here to true -- how to ?
     }

可以用 javascript 设置我的 pug/jade 变量吗?如果没有,请问我有什么替代方案?

标签: javascriptnode.jspug

解决方案


不,你在这里要求做的事情是不可能的。Pug 在服务器上运行,JavaScript 在浏览器的客户端上运行。一旦 pug 模板在服务器上呈现出来,这个过程中就不再有 pug 了。

您可以做的是使用 pug 预加载变量名称:

script.
  var isEmpty = !{isEmpty};
  function changeState(){
    // change isEmpty variable here to true -- how to ?
  }

或者,如果您有一个更复杂的对象,您可以在将其传递给模板之前对其进行字符串化:

script.
  var user = !{user};
  function changeUserName(){
    user.name = ...
  }

推荐阅读