获取Angular控制器上的EJS数据

Dan*_*lla 7 ejs node.js angularjs

我正在尝试使用ejs将数据从我的节点服务器传递到我的角度控制器,以便在控制器加载时可以使用它(对Angular或UI路由器不感兴趣,你可以解析它).

节点服务器(使用express):

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

角度控制器:

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

这样做会给我以下错误: Uncaught SyntaxError: Unexpected token <

如果无法做到这一点,我很想听听有关如何在我的页面上预加载数据的建议.

tym*_*eJV 8

我将传递一个字符串化的数组版本 - 然后在客户端上解析它:

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

并记得引用它(这假设您的控制器在您的EJS页面中)!

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

如果您的控制器在您自己的文件中,您可以使用以下ngInit方法:

<div ng-init="init('<%= names %>')"></div>
Run Code Online (Sandbox Code Playgroud)

并解析:

$scope.init = function(stringifiedArray) {
    var info = JSON.parse(stringifiedArray);
}
Run Code Online (Sandbox Code Playgroud)