2012-11-06 11 views
25

the AngularJS home pageの例を詳しく見ていきます。具体的には、「一部のコントロールを追加」です。私はそれがMVCパターンにどのようにマップされているのかよく分かりません。AngularJSは本当にMVCですか?

テンプレート(index.html)は、TodoCtrlによってtodo.jsからコントローラとして作成されたオブジェクトですが、モデルはどこにありますか? ng-modelのような属性は、フレームワークのいくつかの内部部分にマップされ、モデルと呼ぶことができるオブジェクトを直接公開しません。

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

答えて

3

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

+0

ホームページの例は実際にはMVCのものではありませんか?私はAngularJSでMVCを見るために深くする必要がありますか? –

+1

@PaulLysakドキュメントにはさらに例があります。 MVCであるためには、別個の「モデル」は必要ありません。そして、MVCの定義はやや緩やかです。あなたが参照している例では、モデルは基本的に '$ scope'変数に入れられています。これは単純なモデルであり、単一のコントローラでのみ使用されます。 –

+0

ありがとう、それは多くを明確にした! –

5

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

しかし、私はまだAngularを読んでいませんが、あなた自身がそうしているかもしれません.Angularが本当にMVCフレームワークであるかどうかは、Frameworkのさまざまなコンポーネントそうです。

+1

MVCについてのこの記事を参照http://r.je/views-are-not-templates.html – user1628524

20

MVCの背後にあるコアアイデアは、データ(モデル)、アプリケーションロジック(コントローラ)、および をユーザー(表示)に提示するコード間の明確な分離です。 ビューは、モデルからデータを取得してユーザーに表示します。ユーザがクリックまたは入力して アプリケーションと対話すると、コントローラはモデルのデータを変更して応答します。 最後に、モデルはビューに変更が発生したことを通知し、 の表示を更新できるようにします。角度用途において は、ドキュメントオブジェクトモデル(DOM)は、コントローラ には、JavaScriptのクラスであり、モデルデータは、オブジェクトのプロパティに格納されます。

1

オブジェクトにデータを格納できるものがすべてのフロントエンドフレームワーク(ビュー)よりモデルと見なされる場合、モデルを持つと考えることができます。それらはすべてオブジェクトにデータを格納し、ビューに表示できます。私は角度を呼び出すmvcは本当にそれがより多くのように見えるように見せようとするマーケティングの策略だと思う。

参照:彼らはモデルとして、角度の彼らの例を与えるところコントローラで https://www.pluralsight.com/blog/software-development/tutorial-angularjs-mvc-implementation

は、あります。永続データの保存を支援できない場合は、あまりモデルではありません。

関連する問題