58

AngularJSのドキュメントには、見つけられないものや、足りないものがあります。

私はバックエンドでNodeJSとExpressを使用してWebアプリを作成しており、フロントエンドでAngularとどのように相互作用できるかを理解しようとしています。特に、Angularが情報を取得するためのJSONAPIを用意します。フロントエンドを常に最新の状態にしたいと思います。

私の質問は次のとおりです。

  • 双方向のデータバインディング機能は、Angular($resourceまたは$http)がn 秒ごとにサーバーからデータを自動的にフェッチすることを意味しますか?
  • 当然、長いポーリング、短いポーリング、またはWebSocketを使用しますか?
  • サーバーとクライアントの同期を実現するためにJQueryが必要ですか、それともすべてをAngularで実行できますか?
  • この動作を実現するには、コードを追加する必要がありますか?$ timeoutを使用する必要がありますか?

私が見つけたと思われるすべての例では、クライアントがデータを1回フェッチする必要があります。データをサーバーと同期していません。

4

1 に答える 1

82

AngularJSの双方向バインディングは、データモデル($ scope)とビュー(ディレクティブ)を参照します。たとえば、モデルのデータが変更されると、ビューは自動的に更新されます。同様に、ユーザーがビューのデータを変更すると、モデルが自動的に更新されます。

Webサービスとの対話は、$httpサービスモジュールを介して行われます。したがって、RESTful APIからデータを取得するには、次のようにします。

$http.get('/someUrl').success(successCallback);

$ httpの完全なドキュメントは、AngularJSサイトにあります。jQueryの$.ajaxメソッドと非常によく似ていることがわかると思います。Angularの$timeoutサービス(基本的にはsetTimeoutのラッパー)を使用して、ショートポーリング用に$ http.get()を簡単に設定できます。

AngularJSクライアントとサーバーAPI間のリアルタイムの更新については、Socket.ioを調べることをお勧めします。node.jsを使用して、ブラウザーとサーバー間のライブソケット接続を作成し、古いブラウザー用のフォールバックメカニズム(フラッシュ、ロングポーリング)を備えています。GitHubには、Socket.ioを使用してAngularJSをセットアップする方法を示す定型プロジェクトがあります: https ://github.com/btford/angular-socket-io-seed

要点をまとめると:

双方向のデータバインディング機能は、Angular($resourceまたは$http)がn秒ごとにサーバーからデータを自動的にフェッチすることを意味しますか?

いいえ、双方向バインディングはAngularモデルとビューの間にあります。

当然、長いポーリング、短いポーリング、またはWebSocketを使用しますか?

Angularには、デフォルトではこれらのいずれも含まれていません。自分で設定する必要があります。

サーバーとクライアントの同期を実現するためにJQueryが必要ですか、それともすべてをAngularで実行できますか?

$ httpは、広義には、jQueryの$.ajaxに相当するAngularです。

この動作を実現するには、コードを追加する必要がありますか?$ timeoutを使用する必要がありますか?

短いポーリングには$timeoutを使用するか、長いポーリングやWebSocketには独自のソリューションをロールします(angular-socket-io-seedプロジェクトを参照)。

于 2013-03-14T18:53:58.347 に答える