2011-12-08 11 views
37

मेरे पास मेरे node.js प्रोजेक्ट के लिए एक जेड टेम्पलेट है। मैं जेड टेम्पलेट पर ऑब्जेक्ट भेजना चाहता हूं और इसे पृष्ठ के अंदर एक फ़ंक्शन (कुछ प्रस्तुत करने के लिए) भेजना चाहता हूं।जेड टेम्पलेट, पृष्ठों पर ठोस ऑब्जेक्ट कैसे पास करें?

मुझे यकीन है कि मैं इस

res.render(__dirname + '/pages/viz.jade', { 
    vizJson: newJson, 
}); 
ग्राहक में

तरह सर्वर से सही सामान भेज मैं इस तरह कुछ करना हूँ:

script 
    sunburst(#{vizJson}) 

इस प्रकार, एक स्क्रिप्ट समारोह के अंदर, मैं चाहता हूँ एक फंक्शन को कॉल करें जो सर्वर के पक्ष में बनाए गए कुछ जेसन के साथ मेरा विज़ुअलाइज़ेशन बनाता है।

समस्या यह है कि जब प्रस्तुत किया गया तो मेरे पास sunburst([Object object]) जैसा कुछ है। मैंने जेएसओएन के कड़े संस्करण को भेजने की भी कोशिश की लेकिन जब मैं JSON.parse(#{vizJson}) करता हूं तो यह Unexpected token & की शिकायत करता है।

मैं जो जेसन भेजता हूं वह हमेशा अलग होता है और इसमें विभिन्न स्तरों की गहराई होती है।

क्या कोई जानता है कि क्या करना है?

धन्यवाद

उत्तर

72

मुझे उम्मीद है कि यह किसी की मदद करने जा रहा है। मैं इसे इस तरह हल:

script 
    sunburst(!{JSON.stringify(vizJson)}) 

सूचना ! और {...} stringify विधि लपेटकर।

+0

इससे मेरी मदद की! धन्यवाद –

+0

मेरा जेसन इस तरह वापस आया: '"{\" some_key \ ": ...}" '। यह मूल जेसन ऑब्जेक्ट कैसे प्राप्त हुआ, इसका उत्पाद हो सकता है, लेकिन इस उदाहरण के लिए, मैंने आउटपुट को एक पृष्ठ में JSON.parse ("{\" some_key \ ": ...}") विधि में लपेट लिया। ऑब्जेक्ट ब्राउज़र में ठीक काम करने लग रहा था। – hellatan

+0

यह बहुत अच्छा है। बहुत धन्यवाद! – detj

3

इस काम करने के लिए के लिए, आप सर्वर पर stringify की जरूरत है।

res.render(__dirname + '/pages/viz.jade', { 
    vizJson: JSON.stringify(newJson), 
}); 

फिर, जैसा कि आपने बताया है, क्लाइंट पर JSON को पार्स करें।

script 
    sunburst(JSON.parse(#{vizJson})) 

आशा है कि मदद करता है!

+1

आपको क्लाइंट पर 'JSON.parse' कॉल करने की आवश्यकता नहीं है क्योंकि कोड पहले से ही' स्क्रिप्ट 'टैग के अंदर है। – fent

+1

क्षमा करें कि काम नहीं किया। मैंने कोशिश की एक चीज है। किसी भी तरह धन्यवाद, मुझे पता चला कि यह कैसे करें। – Masiar

+0

आह, अच्छा पकड़ो। – btford

2

विचित्र रूप से पर्याप्त, मेरे लिए समाधान में JSON.parse पर कोई कॉल शामिल नहीं था। मैंने सर्वर पर अपनी ऑब्जेक्ट को स्ट्रिंग किया और बस !{vizJson} विधि का उपयोग किया और मेरी ऑब्जेक्ट क्लाइंटसाइड प्राप्त की।

डॉक्स प्रति नहीं छोड़ा जाएगा स्ट्रिंग प्रक्षेप: http://jade-lang.com/reference/interpolation/

+2

मुझे लगता है कि चीजें 5 साल में बदल गई हैं :) इसे पोस्ट करने के लिए समय निकालने के लिए धन्यवाद! – Masiar

0

जे एस तरफ, तुम वापस

res.render(__dirname + '/pages/viz.jade', { 
    vizJson: JSON.stringify(newJson), 
}); 

एचटीएमएल तरफ भेजने के लिए, मैं ने पाया है कि कुछ की तरह:

JSON.parse('!{vizJson}') 

काम करता है।

संबंधित मुद्दे