2015-10-16 12 views
7

मैं अपने कोणीय नियंत्रक को ईजे का उपयोग करके अपने नोड सर्वर से डेटा पास करने की कोशिश कर रहा हूं ताकि नियंत्रक लोड होने पर मैं इसे उपलब्ध कर सकूं (कोणीय या यूआई राउटर में रुचि नहीं रखते जहां आप हल कर सकते हैं)।कोणीय नियंत्रक पर ईजेएस डेटा प्राप्त करें

नोड सर्वर (एक्सप्रेस का उपयोग करते हुए):

app.get('/', function(req, res) { 
    res.render('index', { 
    names: ["Daniel", "Sarah", "Peter"] 
    }); 
}); 

कोणीय नियंत्रक: Uncaught SyntaxError: Unexpected token <

यदि यह संभव नहीं है:

.controller('NamesController', function ($scope) { 
    var info = <%= names %>; 
}); 

यह मेरे निम्नलिखित त्रुटि देता है कर , मुझे प्री-लोड होने के बारे में सुझाव सुनना अच्छा लगेगा मेरे पेज पर डेटा।

उत्तर

8

मैं में सरणी के एक stringified संस्करण दे देते हैं - तो ग्राहक पर इसे बाहर पार्स:

app.get('/', function(req, res) { 
    res.render('index', { 
     names: JSON.stringify(["Daniel", "Sarah", "Peter"]) 
    }); 
}); 

और यह उद्धृत करने के लिए याद (यह मान लिया गया है अपने नियंत्रक अपने EJS पेज में है)!

.controller('NamesController', function ($scope) { 
    var info = JSON.parse('<%= names %>'); 
}); 

अपने नियंत्रक अपनी खुद की फाइल में है, तो आप एक ngInit विधि का उपयोग कर सकते हैं:

<div ng-init="init('<%= names %>')"></div> 

और पार्स:

$scope.init = function(stringifiedArray) { 
    var info = JSON.parse(stringifiedArray); 
} 
+0

अच्छा लगा। मुझे एनजी-इनिट के साथ काम करने के लिए मिला, लेकिन मुझे यह देखने में उत्सुकता है कि मैं इसे दूसरी तरह से काम करने के लिए क्यों नहीं मिल सकता। नियंत्रक को मेरी ईजेएस फ़ाइल के मूल div पर एनजी-कंट्रोलर के माध्यम से लोड किया जाता है - जो है एक ईजे के माध्यम से लोड एक और ईजेएस फ़ाइल पर शामिल हैं। विचार क्यों कि यह काम नहीं करेगा? –

+0

@DanielFalabella - तो जावास्क्रिप्ट ईजेएस फ़ाइल के अंदर है, है ना? – tymeJV

+0

हाँ। यह अंदर है –

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