2016-09-13 4 views
0

私はtypescriptですと私のコントローラを書いています、私のディレクティブのテンプレートテンプレートだけの属性をコントローラにも定義する必要がありますか?

<div ng-mouseenter="$ctrl.myToggle = true" ng-mouseleave="$ctrl.myToggle = false"> 
... 
</div> 
<div ng-if="$ctrl.myToggle"> 
... toggled content 
</div> 

上の簡単なトグル変数を持っています。

コントローラークラスにmyToggleを定義する必要がありますが、これは使用されませんか? (それは変更する必要があります属性のみなので、私はトグル機能を必要としない)

export MyController { 

    public myToggle:boolean = false; 

    construtctor(){ 
    //... 
    } 

    //... 
} 

それだけで私のテンプレートにロジックのようなものを持っている悪い習慣ですか?

+0

「属性」は「プロパティ」に置き換えてください。それは、OOPに関係している間に、DOMに関する質問であるという印象を与えます。 – estus

答えて

0

コントローラとテンプレート(ビュー)は両方とも、単一のエンティティの一部であり、ディレクティブ/コンポーネントです。これは、コントローラクラスがディレクティブ/コンポーネントクラスと呼ばれる、Angular 2でさらに開発された概念です。

コンポーネント自身が使用することになっているので、プロパティの可視性をprivateと指定するのが正しいです。

getter/setterが不足していることは、カプセル化とテスト容易性の面で利点があるため、実際のケースでは全く同じことであるため、悪い習慣とみなされることがあります。

関連する問題