27

AngularJS ホームページの例、特に「Add Some Control」を調べています。それがMVCパターンにどのようにマッピングされるかはよくわかりません。

テンプレート (index.html) がビュー、コントローラーとして todo.js から TodoCtrl によって構築されたオブジェクトと考えることができることは多かれ少なかれ明らかですが、モデルはどこにあるのでしょうか? 属性のようなng-modelものは、フレームワークの一部の内部部分にマップされ、モデルと呼べるオブジェクトを直接公開しません。

AngularJS を MVC フレームワークと呼ぶのは正しいですか?

4

4 に答える 4

23

MVC の背後にある中心的な考え方は、データの管理 (モデル)、アプリケーション ロジック (コントローラー)、およびユーザーへのデータの提示 (ビュー) をコード内で明確に分離することです。ビューはモデルからデータを取得してユーザーに表示します。ユーザーがクリックまたは入力してアプリケーションを操作すると、コントローラーはモデル内のデータを変更して応答します。最後に、モデルは変更が発生したことをビューに通知し、表示内容を更新できるようにします。 Angular アプリケーションでは、ビューはドキュメント オブジェクト モデル (DOM) であり、コントローラー は JavaScript クラスであり、モデルデータはオブジェクト プロパティに格納されます。

于 2014-10-30T05:33:21.267 に答える
7

私はAngularについて読んでいません。ただし、「真の」MVC とは、モデルにビジネス ロジックが含まれ、コントローラーがユーザー入力をモデルに伝達し、ビューがモデルから独自のデータを取得することを意味することに注意してください。いわゆる MVC フレームワークの多くは、実際には MVC を正しい方法で実装していません。コントローラーにビューの更新の責任も負わせるなど、多くの責任を負わせてコントローラーをオーバーロードしています。これは Controller が意図したことではありません。そのような場合、いわゆる「ファット コントローラー」が得られます。多くの Web 開発者の間で、View は単なる「テンプレート」であるという誤解があります。これは真でもあり、偽でもあります。これはテンプレートですが、コントローラー経由ではなく、モデルから直接独自のデータを取得します。

しかし、私が言い始めたように、私はまだ Angular について読んでいませんが、あなた自身も読んでいるかもしれません。フレームワークのさまざまなコンポーネントが何をするかを見ることで、Angular が本当に MVC フレームワークであるかどうかを知ることができるはずです。

于 2013-12-07T02:12:54.177 に答える
3

属性は、コントローラーで定義されているスコープ変数にマップされます。たとえば、ビジネスロジックを表すJSオブジェクトがいくつかある場合は、それらをスコープ変数に配置すると、スコープ変数の任意の値ではなく、属性をモデル自体にマップできます。

于 2012-11-06T10:51:53.017 に答える