2

我正在使用节点快递和角度。在我的 express app.js 中,我声明了一个路由并将一个变量传递给呈现的页面,就像这样......

app.get('/test' function(req, res){
  res.render('test', { user: 12345 });
});

在我的“测试”视图中,我使用 ng-controller 将容器链接到角度,就像这样......

<div ng-controller='testCtrl'> <!--some markup here--> </div>

在我的 angular controllers.js 中,我为我的视图声明了一个函数,就像这样......

function testCtrl($scope) {
    /*...some code here...*/
}

如何在控制器函数内部访问从 express 传递给视图的“用户”变量?

4

2 回答 2

7

因为您使用模板来呈现视图,所以有两种不同的执行方式:(1) 您的服务器正在呈现页面(使用uservar),然后 (2) 浏览器运行 AngularJS。因此,您不能将变量从 (1) 传递到 (2)。

但是,有一个名为的指令ngInit将在引导期间解析表达式。如果你在 ExpressJS 中使用 Jade 模板,你可以这样做:

div(ng-init='user = "'+user+'"')

它将像这样呈现 HTML:

<div ng-init="user = 'whatever-server-sent'"></div>

因此,当 AngularJS 引导页面的这一部分(或这个部分或模板)时,user它将成为一个范围变量,其中包含来自服务器的值。

我没有测试 Jade 代码,也不是 Jade 专家,但这应该会让你走上正轨。如果您使用不同的模板引擎,请告诉我,我会修改答案。

于 2013-03-01T17:53:53.710 回答
-1

Jade 变量可以在 Angular 中通过将插值分配给一个变量来访问ng-init

首先,您必须对用户进行字符串化,然后使用插值#{value} div(ng-init = 'angularUser = #{JSON.stringify(user)}')

在这种情况下,user变量是 Jade 变量

于 2016-02-18T11:58:20.893 回答