2015-10-16 13 views
7

Próbuję przekazać dane z mojego serwera węzła za pomocą programu ejs do mojego kontrolera kątowego, dzięki czemu mogę go udostępnić po załadowaniu kontrolera (niezainteresowany routerem Angular lub UI, w którym można rozwiązywać).Uzyskaj dane EJS dotyczące kontrolera kątowego

serwer Węzeł (za pomocą Express):

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

kątowa kontroler:

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

Rozwiązanie to daje mi następujący błąd: Uncaught SyntaxError: Unexpected token <

Jeśli nie jest to możliwe , Chciałbym usłyszeć sugestie dotyczące tego, jak wstępnie załadować dane na mojej stronie.

Odpowiedz

8

Chciałbym przekazać stringified wersję tablicy w - następnie zanalizować go na kliencie:

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

I pamiętaj, aby go zacytować (Zakłada kontroler jest na stronie Ejs)!

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

Jeśli kontroler jest w swoim własnym pliku, można użyć metody ngInit:

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

i analizować:

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

Nicea. Mam go do pracy z ng-init, ale jestem ciekawy, dlaczego nie mogę zmusić go do pracy w inny sposób. Kontroler jest ładowany przez ng-kontroler na div jednostki nadrzędnej mojego pliku ejs - który jest ładowane przez ejs obejmują na innym pliku ejs. Myślisz, dlaczego to nie zadziała? –

+0

@DanielFalabella - Więc JavaScript jest w pliku EJS, prawda? – tymeJV

+0

Tak. Jest w środku. –

Powiązane problemy