2016-09-02 5 views
0

私はAngularjs(1.5)を学習しようとしています。私はすでにフィルタとサービスの概念を理解しており、コントローラとディレクティブの背後にあるロジックも理解しています。しかし、私が最初のアプリケーションを書いてみると、ビューのコンポーネントをコントローラまたはディレクティブに分割すべきかどうかを区別できませんでした。たとえば、次のようなページがあります。今Anguarjsディレクティブまたはコントローラがビューコンポーネントを分離する

<navigation-bar> 
    <menu></menu> 
    <search-box></search-box> 
</navigation-bar> 
<content> 
    <comments> 
    <comment></comment> 
    <comment></comment> 
    <comment></comment> 
    </comments> 
</content> 

、私はtemplateUrlと各コンポーネントのコントローラを作成しています、このアプローチは正しいですか私の代わりにディレクティブを作成する必要がありますか?ディレクティブを作成する必要がある場合は、コメントセクションをどのように管理すればいいですか。サービスから収集されたデータをコメントごとに繰り返します。繰り返しコンテンツのCommentsControllerとCommentディレクティブを作成するのは正しいですか?事前に

おかげで、あなたの

+1

*「templateUrlを使用して各コンポーネントのコントローラを作成していますが、この方法は正しいのですか、代わりにディレクティブを作成する必要がありますか?」 - コンポーネント*はディレクティブです。あなたのアプローチはかなりうまくいくかもしれません。私は、それを続けると言うだろう。 – dfsq

答えて

0

Firstrはディレクティブとコントローラについて知っている必要があります。
ディレクティブ: -カスタム属性と要素でHTMLを拡張します。
コントローラ:ビューの背後にあるビジネスロジック。

ビジネスロジックのみを記述する必要がある場合は、コントローラに書き込むことができます。サービスデータにアクセスする場合は、コントローラにサービスを注入します。
私はデータを保存するためにロジックを書くことができます、あなたはレンダリングロジックを書くことができ、データ処理とロジックを処理することができます。そのような論理のために、カスタム命令の必要はありません。

ただし、カスタムディレクティブを使用する必要があるときにビューをカスタマイズする必要がある場合は、はい。
例:
- 選択ウィジェットをフォームに表示するとします。
- フィールドの詳細を表示したい場合や、カスタムディレクティブを使用する特定のフィールドのカスタマイズビューを表示する場合。あなたのケースでは

、上記のコードで

<navigation-bar> 
    <menu></menu> 
    <search-box></search-box> 
</navigation-bar> 
<content> 
    <comments> 
    <comment></comment> 
    <comment></comment> 
    <comment></comment> 
    </comments> 
</content> 

HTMLを作成し、コントローラとそれを使用しますが、あなたの検索ボックスやコメントをcutomiseしたい場合にのみ、そのためのカスタムディレクティブを追加それ以外の場合は使用する必要はありませんカスタムディレクティブ。

関連する問題