簡體   English   中英

如何從大型json對象獲取特定數據到Jade mixin

[英]How to get specific data from large json object into Jade mixin

這是我的服務器的json:

data = {"id":393, "state":"mississippi", "lat":null, "lng":null, "title":"someTitle", "country":null};

然后,我將其通過這樣的玉廟: res.render('editUpload', {fromServer:data});

然后在我的Jade模板中,我有這個:

var data = !{fromServer};
console.log(data.address);

哪個可以正確打印密西西比州

但是,我正在嘗試讓我的mixins使用該數據

混合:

mixin textBoxMixin(name, label, value)
    div(style="display:flex; width:100%;")
        span.label #{label}
        input(type="text", name="#{name}", value="#{value}")

然后我這樣使用:

+textBoxMixin("title", "Title", fromServer)

它將在文本框中填充整個json“ {” id“:393,” state“:” mississippi“,” lat“:null,” lng“:null,” title“:” someTitle“,” country“: null}”,因此我可以嘗試以下操作:

+textBoxMixin("title", "Title", fromServer.title)

它顯示“未定義”。

我如何獲得此mixin來接受fromServer.title應該是什么?

我已經嘗試過JSON.stringify(fromServer),data.address(這顯然不起作用,因為在頁面呈現期間未定義數據)。 我知道我可以回到我的服務器並解析出所有json並將每個項目作為一個單獨的項目傳遞,但這將是一個巨大的痛苦,因為我的json實際上比我在這里發布的要大得多。

問題是我通過JSON.stringify()將json從route.js文件發送到模板后,這使我可以使用var data = !{fromServer}; JSON.stringify() 在頁面的腳本中,但是Jade無法解析String。 所以現在我在路由中這樣做,以便同時擁有可用於模板化的json和JavaScript的String:

    data = rows[0][0];
    stringFromServer = JSON.stringify(rows[0][0]);
    res.render('editUpload', {fromServer:data, stringFromServer:stringFromServer, username: req.session.user});

當您在mixin定義中引用參數時,您將傳遞它們的方式就像普通的帕格代碼一樣,沒有引號和花括號。

mixin textBoxMixin(name, label, value)
  div(style="display:flex; width:100%;")
    span.label= label
    input(type="text", name=name, value=value)

+textBoxMixin("title", "Title", fromServer.title)

呈現的內容如下:

從mixin渲染

另外,Jade現在是Pug,我知道您知道,因為您在此問題中標記了Pug,所以應該開始將其引用為Pug :)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM