将服务器端数据传递给Angular

Pass server-side data into Angular

本文关键字:Angular 服务器端 数据      更新时间:2023-09-26

我目前试图在我的MEAN应用程序中显示登录用户的名称。我正在使用EJS模板引擎,我能够通过在我的标记中放置<%- user.username %>来显示用户名。这样做的问题是,我真的不想把angular和嵌入式脚本混合在同一个文件中,我想把服务器端数据传递给angular。我尝试过ng-init,但是我没有任何成功。

我假设你使用的是ExpressJS 4,它在版本3中会有一点不同,但是两个版本的方法是相同的:

节点/服务器端

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();
var router = express.Router();
router.get('api/account', function(req, res){
  res.json({ "login": req.session.user.login }); /*access the session account not sure if this matches your login location you will adapt it to your own*/
});

客户端角/

然后从控制器或服务中调用url api/account,并使用GET请求来接收JSON,如:

$http.get("/api/account").then(function(data){ console.log(data); });

那么你可以这样做:

$scope.login = data.login;

html

{{login}}

根据我对Angular的理解,它不鼓励在HTML代码中设置服务器端模板化的值。考虑设置一个提供数据的JSON服务,并通过JSON获取数据。在Angular教程的末尾有一个例子可以让你更清楚地理解这个问题。

我做了完全相同的事情,并混合EJS来嵌入诸如服务器信息之类的东西(从客户机启动套接字连接)。如果你想保持这种纯粹的客户端,你需要让AngularJS使用service/factory获取服务器端数据——然后影响依赖于这些数据的任何视图。

ng-init只适用于"Angular"作用域内的东西。