4

私は AngularJS に頭を悩ませようとしています。私はそれをたくさん気に入っていますが、核となる概念が私を逃れているようです – モデルはどこですか?

たとえば、トランザクションの複数のリストを表示するアプリケーションがあるとします。1 つのリストは、いくつかの基準に一致するページ分割された一連のトランザクションをサーバーに照会し、もう 1 つのリストは別の基準を使用しますが、両方の基準に一致し、両方のリストに入るトランザクションがいくつかある場合があります。今:

  1. 両方のリストに表示されるトランザクションは、両方のスコープで同じオブジェクトである必要がありますよね? それがデータ バインディングの最大の特徴ではないでしょうか。ある場所での更新は、別の場所でミラーリングされますか?

  2. トランザクションは、未加工のサーバー API リクエストを抽象化する複雑な動作を持つ可能性があり、サーバーへの後続のクエリでより多くのデータを収集し、変更を監視し、ダーティとしてマークする必要があります。これらはすべてどこに行くのでしょうか?

  3. リスト自体はトランザクションがいつ削除されたかを知る必要があるため、あるリストで削除された同じトランザクションは別のリストから消えます。

  4. クライアント側ストレージのフレーバーにトランザクションをキャッシュしたいかもしれませんか?

もう一度質問です。これはどこに行きますか? すべてが $rootScope に取り込まれ、コントローラーで制御されますか? サービスに委任されていますか?

ここでの方向性は、どんなに漠然としていても歓迎されます。

4

1 に答える 1

8

Angular の特徴は、モデルをユーザーに任せることです。組み込みオブジェクトを機能させるために拡張する必要はありません。任意のオブジェクトにすることができます。

a) はい。でも、私が言ったように、それはあなた次第です。必要に応じて、バックボーン モデルの実装を使用することもできます。

b)おそらくモデルオブジェクトにあります。Angular は、使用できるリソース サービスを提供します。これらのリソースに対して独自のメソッドを定義できるので、それが出発点として適しています。

c) GUI 部分ですか、それともビジネス ロジックですか? Angular が GUI を処理します。リストからトランザクションを削除する関数を実装するだけで、Angular がそれを再レンダリングします。

d) 繰り返しますが、ライブラリを実装または使用するのはあなた次第です。Angular はほとんどが GUI フレームワークであり、モデル/永続層についての意見はほとんどありません。

最後の質問です。ほとんどのロジックをサービスに配置します。Angular コントローラーには必要なサービスが注入され、スコープを通じてビューに機能が公開されます。基本的にテンプレート内でグローバルになるため、ルート スコープに何かを追加することはできる限り避ける必要があります。

于 2013-02-23T22:02:09.430 に答える