【问题标题】:Get EJS data on Angular controller在 Angular 控制器上获取 EJS 数据
【发布时间】:2016-01-15 09:32:50
【问题描述】:

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

节点服务器(使用 express):

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

角度控制器:

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

这样做会给我以下错误:Uncaught SyntaxError: Unexpected token &lt;

如果这不可能,我很想听听有关如何在我的页面上预加载数据的建议。

【问题讨论】:

    标签: angularjs node.js ejs


    【解决方案1】:

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

    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);
    }
    

    【讨论】:

    • 不错。我让它与 ng-init 一起工作,但我很想知道为什么我不能让它以另一种方式工作。控制器是通过我的 ejs 文件的父 div 上的 ng-controller 加载的 - 这是通过另一个 ejs 文件中的 ejs 包含加载。思考为什么那行不通?
    • @DanielFalabella -- JavaScript 在 EJS 文件中,对吧?
    • 您在尝试写入变量时是否引用了该变量? var data = '&lt;%= var %&gt;';
    • 是的:var info = JSON.parse('&lt;%= names %&gt;');。我仍然收到此错误:Unexpected token &lt;
    猜你喜欢
    • 2017-07-24
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2015-08-09
    相关资源
    最近更新 更多