2015-10-16 6 views
7

Ich versuche, Daten von meinem Knoten Server zu übergeben ejs meinen Winkel Controller so, dass ich es zur Verfügung haben kann, wenn die Controller Lasten (nicht interessiert Router Winkel- oder UI wo Sie Entschlüsse haben können).Get EJS Daten auf Angular Controller

Node-Server (unter Verwendung von Express):

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

Winkelregler:

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

Dadurch mir folgende Fehler gibt: Uncaught SyntaxError: Unexpected token <

Wenn dies nicht möglich ist Ich würde gerne Vorschläge hören, wie man sie vorinstalliert hat Daten auf meiner Seite.

Antwort

8

würde ich eine Zeichenfolgeversion des Arrays in geben - es dann auf dem Client parsen:

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

Und denken Sie daran, es zu zitieren (Dies setzt Ihr Controller in Ihrer EJS Seite ist)!

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

Wenn Ihr Controller in Ihrer eigenen Datei ist, können Sie eine ngInit Methode verwenden:

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

und analysieren:

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

Nizza. Ich habe es mit ng-init zu arbeiten, aber ich bin gespannt zu sehen, warum ich nicht bekommen kann es der andere way.The Controller arbeiten ng-Controller auf dem übergeordneten div meiner EJS-Datei geladen durch - das ist, geladen durch ein ejs enthalten in einer anderen ejs-Datei. Gedanken darüber, warum das nicht funktionieren würde? –

+0

@DanielFalabella - Also ist das JavaScript in der EJS-Datei, richtig? – tymeJV

+0

Ja. Es ist drinnen. –

Verwandte Themen