2011-10-02 15 views

उत्तर

22

कि सबसे आसान तरीका है, res.render को एक कॉलबैक पारित करने के लिए अपने उदाहरण में है:

res.render('list.ejs', {posts: posts}, function(err, list){ 
    // 
}); 

लेकिन आप निश्चित रूप से एक होना चाहिए अगर तुम उन्हें एक और टेम्पलेट में शामिल करने के लिए आदेश में आंशिक टेम्पलेट्स को रखना चाहते हैं view partials पर देखें।

+1

मुझे json प्रतिक्रिया – xrado

+1

में AJAX द्वारा आंशिक लोड करने की आवश्यकता है, तो क्या यह काम करता है? मैं वास्तव में उपयोगकर्ता को एक पृष्ठ वापस प्रस्तुत नहीं करना चाहता, मैं res.json() प्रतिक्रिया में प्रस्तुत स्ट्रिंग को शामिल करना चाहता हूं। – chovy

+0

हां, यह काम करता है। डिफॉल्ट कॉलबैक, जो पृष्ठ को उपयोगकर्ता को वापस प्रस्तुत करता, जिसे आप स्वयं पास करते समय नहीं कहा जाता है। –

2

मैं काफी express.js पर एक नौसिखिया हूँ की तरह, वैसे भी मुझे यकीन है कि आप हालांकि अगर आप दृश्य 'एक्सप्रेस पर "देखो प्रदान की गई स्ट्रिंग कि जिस तरह से उपयोग कर सकते हैं, नहीं कर रहा हूँ .js "github पर स्रोत (here) आप देखते हैं कि यह कॉलबैक को दूसरे तर्क के रूप में स्वीकार कर रहा है, अगर इससे मदद मिल सकती है: आप वहां रेंडर स्ट्रिंग तक पहुंच सकते हैं।

अन्यथा, मुझे लगता है कि इसे भेजने के बिना प्रस्तुत स्ट्रिंग को वापस करने की विधि जोड़ने के लिए कोड को पैच करना काफी आसान है: on line #399 आपके पास वह कॉल है जो आप जिस स्ट्रिंग को ढूंढ रहे हैं उसे देता है।

1

यह मूल रूप से नहीं पूछा गया था, लेकिन ओपी और अन्य लोगों की टिप्पणियों के आधार पर, ऐसा लगता है कि लक्ष्य जेसन (जेसनपी) के माध्यम से आंशिक रूप से प्रस्तुत करना है, जो मुझे बस इतना करना है।

यह बहुत आसान है:

app.get('/header', function (req, res) 
{ 
    res.render('partials/header', { session: req.session, layout: null }, function (err, output) 
    { 
     res.jsonp({ html: output }); 
    });  
}); 

नोट: मेरे मामले में, हेडर आंशिक आवश्यक सत्र, और मेरे टेम्पलेट लायब्रेरी (व्यक्त-एचबीएस) layout: null जरूरत डिफ़ॉल्ट लेआउट का उपयोग किए बिना आंशिक रेंडर करने के लिए।

फिर आप इसे किसी अन्य JSONP एंडपॉइंट की तरह क्लाइंट में जावास्क्रिप्ट कोड से कॉल कर सकते हैं।

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