2

nodeexpressとangularjsでアプリを構築しています。次のように、変数をビューに渡します...

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

私はこのように私のビューで変数にアクセスできます(翡翠)...

h1 #{user}

しかし、コントローラーまたはディレクティブの角度関数からこの変数にアクセスするにはどうすればよいですか?

4

5 に答える 5

7

このトピックに関するブログ記事を書きました - How to pass JavaScript Variables from a server to Angular .

要約すると、次の 3 つのオプションがあります。

  1. インライン JavaScript タグを使用する (非推奨)
  2. HTTP リクエストを作成します (独自のソリューションで示したように)
  3. ngInitを使用する

私の投稿で詳細を読むことができます。私は最後の、そして私の意見では最も賢い解決策だけを示します.

userExpress サーバーから Angular コントローラーにオブジェクトを渡すには、次のngInitディレクティブを使用します。

div(ng-controller="UserCtrl", ng-init="user= #{JSON.stringify(user)}")

これにより、コンテンツが Angular スコープに読み込まれ、 を呼び出してコントローラー内でアクセスできるようになります$scope.user

function UserCtrl($scope) {
  console.log($scope.user);
}
于 2013-04-16T06:49:49.790 に答える
0

James に感謝します。FoodMe のデモは素晴らしい学習リソースのようです。あなたの返信を読んで、私自身の解決策を考え出すのに十分なほど私の考えが変わりました。コメントのコードがひどいので、別の回答として追加します。node と angular がどのように連携するかについての私の理解を深めるために、おそらくあなたまたは他の誰かが親切に、私たちの 2 つのソリューションがどのように比較されるか、なぜ、またはいつどちらが好ましいかについてコメントしてくれるかもしれません.

私のエクスプレスapp.jsでは...

app.get('/api/user', api.user);

そして私のroutes/api.jsで...

exports.user = function (req, res) {
  res.json(req.user);
};

そして、角度コントローラーで...

function profileCtrl($scope, $http) {

  $http.get('/api/user/').success(function(data) {
    $scope.user = data;
  });
}
于 2013-02-21T20:38:58.540 に答える
0

これは古い投稿ですが、関連する投稿です。Zemrico の回答は適切ですが、jade/pug 構文にいくつかの変更があるため、更新する必要があります。まず、彼の回答のリンクが壊れており、

http://www.mircozeiss.com/how-to-pass-javascript-variables-from-a-server-to-angular

ブログ投稿を読んでいる場合は、pug が補間を属性として受け入れなくなったため、以下が機能しなくなったことに注意してください。

div(ng-controller="UserCtrl", ng-init="user= #{JSON.stringify(user)}")

代わりに、これを使用してください。

div(ng-controller="UserCtrl", ng-init="user=" + JSON.stringify(user) )
于 2016-10-30T06:50:44.820 に答える
0

理想的ではない方法で物事を混ぜているように思えます。これを行う最善の方法は、Angular コードで$resourceを使用して /profile を呼び出し、その方法でデータを取得することだと思います。

このように考えてください。ノードを使用して Web サービスを作成しました。今度は、AngularJS を使用してサービス レイヤーから Web サービスを呼び出します。それを呼び出すためのコードはかなり簡単で、リンクしたドキュメントで見つけることができます。

また、 FoodMe demoも確認してください。これは、node.js を Web サービス レイヤーとして使用し、angularJS をクライアント側の UI レイヤーとして、設定したとおりに使用します。

于 2013-02-21T19:35:52.113 に答える