0

2 つのコンテナを含むページがあり、それぞれに画像が含まれています。これらの画像に特定の視覚的属性と機能を追加したいと考えています。これらの特定のものは両方の保管場所で似ていますが、同じではありません。したがって、2種類の画像に対して1つのディレクティブを作成したいのですが、画像が配置されている保管庫(実際にはスコープ)に応じて、動作が少し異なるようにしたいと考えています。ディレクティブの本文で要素のスコープを確認しています:

studio.directive('orientable', function () {
    return {
        link: function(scope, element, attrs) {
              if(scope.id=="Depository1"){ 
              // give to element some specific behaviour
              }else if(scope.id=="Depository2"){ 
              // give to element another specific behaviour
              }
    }    
}

私には醜いようです。
引数をディレクティブに渡すことはできません。これは、イメージのタグが読み取り不能になり、多くのイメージがある場合は Disaster になるためです。基本的に同じになるため、2 つのディレクティブは必要ありません。
だから私は1つのディレクティブが欲しいのですが、どういうわけかそれは「ポリモーフィック」でなければなりません。ここで何らかの継承が可能ですか?Angular のディレクティブを理解する上で重要な何かが欠けていると思います。

4

1 に答える 1

0

単一のディレクティブがスコープに基づいて異なる動作をするようにしたい場合は、いくつかのスコープ プロパティをチェックすることは私にとって完全に理にかなっているように思えます。

Angular で最もポリモーフィズムに到達できると思うのは、共有するもの (データ、関数など) をサービスに入れ、そのサービスをポリモーフィズムが必要な場所 (ディレクティブ、コントローラー、その他のサービスなど) に挿入することです。

于 2013-07-11T17:09:35.273 に答える