express使用pug模板引擎时,render发送的参数如何在jQuery中使用?

在express中使用pug作为模板引擎,当render一个视图时:

router.get('/edit-item/:id', function(req, res, next){
    let id = req.params.id;
    serviceItem.find({_id:id}, function(err, data){
        console.log(data);
        res.render('service/editItem',{dataObject:data[0], id:id});
    });
});

向视图传递一个dataObject参数,在pug模板中可以这样使用:

div.form-group
     label 项目名称
     - let name = dataObject.name;
     input.form-control(type="text" name="name" value=name)

但是,如果要在pug模板中的jQuery中使用这个dataObject,该咋办?

script.
        $(document).ready(function(){
            console.log(dataObject);  //这个控制台会提示undefined
        })
阅读 7.5k
3 个回答
script.
    let dataObj = "#{dataObject}";

这里就会把 dataObject 的值传进来作为变量赋给 dataObj ,这是很早之前 express 的语法,不知道现在这种写法还能不能工作。

res.render传递的参数并不是js变量,而是传递给模板的。
你可以先把参数写入到html的某个元素的data或是是其他属性中,然后js去获取;
或是直接在script中把这个参数赋值给一个js变量。

没接触pug模板,yy着写的请见谅。

script.
    -let dataObj = dataObject;
    $(document).ready(function(){
        console.log(dataObject);
    })

猜测类似-这个写法应该会全部判定为js解析,跟script.无关。感觉是行的,试试看?

要么就只能放到某个标签内部当做属性,完了在jq代码里取一下。

不正之处请指出,谢谢。


突然感觉不太对。不行就不行了哈……


sorry编辑了n次。

script.
    let dataObj = -dataObject;
    $(document).ready(function(){
        console.log(dataObject);
    })

这样写对不对,思路就是把dataObject解析到script标签里。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题