Tengo algunos problemas con mi api. Uso NodeJS con ExpressJS Routing y AngularJS.
Lo que quiero hacer es renderizar una plantilla (ejs) y al mismo tiempo enviar un objeto json.
En mi carpeta de rutas tengo el archivo index.js con esto (una pequeña parte):
router.get('/data', function(req, res, next){ Planning.getPlanningM(function(resultat){ res.json(resultat); res.render('index'); }); });
Sobre la variable resultado estoy seguro que contiene lo que quiero. Pero no puedo hacer res.json y res.render. Debido a las dos invocaciones de la función de envío.
Y en mi angular tengo esto en una función:
var resultat = [] $http.get('/data') .success(function(res){ angular.extend(resultat, res.data); }) .error(function(res){ console.log('err'); }) return resultat;
El objetivo es representar mi index.ejs y mostrar mi planificación en esta página. Pero no encuentro solución para hacer esto. Esta es mi primera pregunta en stackoverflow, el inglés no es mi idioma nativo. Por favor, no seas grosero conmigo :)
No estoy familiarizado con EJS, uso manillares, pero debería poder pasar datos en la función de renderizado así:
... res.render("index", { data:resultat }); ...
Luego acceda a él en la plantilla en cualquier formato que use EJS. Para hbs se vería algo así como
... <div>My data looks like this: {{data}}</div> ...
Nuevamente, EJS seguramente lo hará de manera diferente, consulte el documento para asegurarse de tener el formato correcto.
¡Gracias por tu respuesta MPawlak! ¡Me ayudó! Lo que quiero es enviar los datos con el render como lo haces, sí.
Pero quiero tomar/tomar estos datos en mi fábrica angular (mi fábrica llena el controlador, esta parte funciona) que muestro antes:
var resultat = [] $http.get('/data') .success(function(res){ angular.extend(resultat, res.data); }) .error(function(res){ console.log('err'); }) return resultat;
¡Con su método, puedo tomar estos datos en mi vista directamente a su derecha y funciona! Gracias !
<pre> <%= data %> </pre>
Así que estaba pensando en una solución temporal sucia para hacer esto:
<textarea ng-model="planning"> <%= data %> </textarea>
Pero cuando quiero mostrar esta planificación, no funciona y se queda vacía... No entiendo por qué.
Pero para obtener una solución buena y limpia, creo que esta no es una buena idea, por lo que mi pregunta es la misma ... ¿cómo tomar estos datos en mi fábrica angular directamente?