我如何传递node.js服务器变量到我的angular/html视图

How do I pass node.js server variables into my angular/html view?

本文关键字:angular 我的 html 视图 变量 何传递 node js 服务器      更新时间:2023-09-26

我有这个路由在我的app.js文件中启动服务器

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

在我的view_item。html中:

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

我想让它显示变量值- 5。如果我使用一个模板引擎,如jade,这将是很容易的。我可以将服务器代码的第三行改为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时,有不同类型的"方法"可以根据您的需要调用,例如POST, DELETE, UPDATE或刚刚在示例中提到的GET。

    如果你正在使用Angular,你可能应该构建一个单页应用——这适用于大多数现代前端框架。对于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将被填充。