Javascript 将服务器端数据传递到

Javascript 将服务器端数据传递到,javascript,angularjs,Javascript,Angularjs,我目前正在尝试在我的应用程序中显示登录用户的名称。我使用的是EJS模板引擎,我可以通过将放入我的标记中来获得显示的用户名。问题是,我不想在同一个文件中混合angular和嵌入式脚本,我想将服务器端数据传递到angular。我曾经尝试过ng init,但没有成功。据我对Angular的理解,它不鼓励在HTML代码中设置服务器端模板值。考虑设置提供数据的JSON服务,并通过JSON获取数据。有一个例子可以让这一点更清楚。我做了完全相同的事情,混合使用EJS来嵌入诸如我的服务器信息之类的东西(从客户端

我目前正在尝试在我的应用程序中显示登录用户的名称。我使用的是EJS模板引擎,我可以通过将
放入我的标记中来获得显示的用户名。问题是,我不想在同一个文件中混合angular和嵌入式脚本,我想将服务器端数据传递到angular。我曾经尝试过ng init,但没有成功。

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

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


仅适用于“角度”范围内的事物。

我假设您使用的是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*/
});
角度/客户端

然后,通过GET请求从控制器或服务调用url
api/account
,以接收JSON,如:

$http.get("/api/account").then(function(data){ console.log(data); });
然后你可以做一些类似的事情:

$scope.login = data.login;
html

{{login}}

事实上,我想我已经发现了问题所在。当我返回'user'时,它会从数据库中获取整个用户对象,其中包含由mongoose生成的、包含非法字符的'u id:5380c1b57cb76dcc0f647524',-这现在是一个单独的问题,但有办法格式化'u id吗?这很好,谢谢!为了调用登录名,我必须两次传入数据,这有什么特别的原因吗?例如,$scope.username=data.data.login.username这是因为回调中的
数据
实际上是一个具有多个属性的对象,例如
标题
状态
数据
。所以我认为答案中的代码应该调整。@Dalorzo我是。你测试过这个吗?看起来当你使用
success
error
方法时,就像你说的那样,但是使用
then
方法则不同。在名为Returns的部分中:“传递到这些函数中的参数是传递到then方法中的响应对象的非结构化表示。响应对象具有以下属性:data–{string | object}–使用转换函数转换的响应体…”