如何将node.js服务器variables传递到我的angular / html视图中?

我有我的app.js文件启动服务器的这条路线

app.get('/view/:item_id', function(req,res){ var A = 5; res.render('view_item'); 

我在view_item.html有这个:

 <p>{{A}}</p> 

我希望它显示variables值 – 5.如果我使用的是像玉这样的模板引擎,那很容易。 我可以将我的服务器代码的第三行更改为res.render({A:A},'view_item');

但我使用HTML作为我的模板引擎。 到目前为止,我的研究已经告诉我,使用具有angular度的模板引擎通常是一个糟糕的主意,而且总是有一种方法可以使用angular内置的模板系统来实现。 那我该怎么做呢? 我不知何故传递给$范围,包括像

 <script> $scope.A = {{A}}; </script> 

我从来没有看到过这样做,所以我不认为它的路要走。

这是一个两步的过程。

  1. 首先,您需要像使用节点中的 express一样使用库(服务器库)来设置适当的路由(REST服务)以响应您的请求:

服务器端

 //app = express(); app.get('/api/:paramID1/:paramID2',function(req, res){ return res.json({ A: 5 }); }); 
  1. 客户端 ,你需要一个ajax调用来调用服务,如:

     $http.get( "/api/1/abc").success(function( data ) { $scope.A= data; //from your sample; alert( "Load was performed. " + data ); }); 

请注意,使用REST时,根据您的需要可以调用不同types的“方法”,例如POST,DELETE,UPDATE或GET示例中提到的方法。

如果您正在使用Angular,您应该可以构build一个单页面应用程序 – 这将适用于大多数现代前端框架。 对于SPA,你从一个基本的html文件开始(可能是index.html )。 然后,你的框架处理其他一切的渲染。 你的服务器也可能发出模板,但是它本身不会渲染任何东西。

 app.get('/view/:item_id', function(req,res){ 

这不应该呈现任何东西或返回HTML。 相反,你应该返回前端将用来渲染的数据 – 最好是JSON。

 res.json({A: 5}); 

然后用Angular你会做类似的事情

 $http.get("/view/1").success(function (data) { ctrl.A = data.A; }); 

你的HTML /模板会有类似的东西

 <div ng-controller="ctrl as ctrl"> <div>{{ctrl.A}}</div> 

一旦$http.get完成, ctrl.A被填充。