2

ノードエクスプレスと角度を使用しています。私の Express app.js では、ルートを宣言し、レンダリングされたページに変数を渡します。

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

私の「テスト」ビューでは、コンテナーを ng-controller を使用して angular にリンクします...

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

そして、Angular controllers.js で、ビューの関数を次のように宣言します...

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

コントローラー関数内で、エクスプレスからビューに渡した「ユーザー」変数にアクセスするにはどうすればよいですか?

4

2 に答える 2

7

テンプレートを使用してビューをレンダリングしているため、2 つの異なる実行があります。(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 に答える