如何将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>
我从来没有看到过这样做,所以我不认为它的路要走。
这是一个两步的过程。
- 首先,您需要像使用节点中的 express一样使用库(服务器库)来设置适当的路由(REST服务)以响应您的请求:
服务器端
//app = express(); app.get('/api/:paramID1/:paramID2',function(req, res){ return res.json({ A: 5 }); });
-
在客户端 ,你需要一个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
被填充。