2017-12-18 7 views
0

いくつかのタブがカスタマイズされています。 は、ここで私が持っているものです。AngularJS md-tab&ng-repeat:特定のタブにカスタムスタイルを追加する

<md-tabs> 
    <md-tab ng-repeat="tab in tabs" ng-class="tab.customClass"> 
     <md-tab-label ng-bind="tab.label"></md-tab-label> 
    </md-tab> 
</md-tabs> 

私の問題:唯一の生成に必要なのため置き換えられます:カスタムクラスは

NOTEコンパイルMD-タブの項目ではありませんタブボタンとペイン。

私はいくつのタブがあるのか​​分からないので、位置に基づいてCSSを書くことはできません。

アイデア?

答えて

1

タブ自体の上部の外観をカスタマイズする場合は、デコレータを使用してこれを行うことができます。これにより、実行時にディレクティブの動作を変更できます。あなたは、タブ自体のスタイルをしようとしている場合は、そのディレクティブは、「MD-タブ項目」になります例えば

(function() { 
'use strict'; 

MdTabItemDecorator.$inject = ['$provide']; 

angular.module('common').config(MdTabItemDecorator); 

function MdTabItemDecorator($provide) { 
    $provide.decorator('mdTabItemDirective', [ 
     '$delegate', 
     '$controller', 
     function ($delegate) { 

      var directive = $delegate[0]; 

      directive.compile = function() { 
       return function (scope, elem, attrs) { 
        directive.link.apply(this, arguments); 
        elem.attr('style', 'color:red'); 
        scope.tabIndex = scope.$parent.$index; 
       }; 
      }; 

      return $delegate; 
     } 
    ]) 
} 

})(); 

上記の例では赤に、タブのテキストの色を変更します。ここで何が起こっている

たちは

function MdTabItemDecorator($provide) { 
$provide.decorator('mdTabItemDirective', [ 
    function ($delegate) { 

     ... 

    } 
]) 

とデコレータmdTabItemを作成している。これは、あなたがインスタンス化されようとしているディレクティブのオブジェクトの表現である$デリゲートオブジェクトへのアクセスを与えることです。

これにより、ディレクティブがどのように動作するかを変更して、デリゲートオブジェクトをいくつか変更して戻すことができます。

この場合、私は、既存のリンク機能を取り、それが指示要素のスタイルを設定する機能です拡張しています。

 directive.compile = function() { 
      return function (scope, elem, attrs) { 
       directive.link.apply(this, arguments); 
       elem.attr('style', 'color:red'); 
       scope.tabIndex = scope.$parent.$index; 
      }; 
     }; 
+0

うん。私は昨日それを理解した!幸い私はAngularJs 1.5を使っていました。 実際には、最初のリピートの範囲が失われたため、私は別の何かをしなければなりませんでした。私はできるだけ早く質問に答えるでしょう... –

+0

上記の場合は、すべての場合にディレクティブがどのように動作するかを変更します。 –

+0

はい。しかし私の要求はより具体的でした。私は生成されたtabItemにカスタムクラスを追加したかったのです。あなたの例では、すべてのtabItemに同じスタイルしか追加できません。 最後の行=> scope。$ parent。$ indexは未定義です。親スコープにリピートがないためです。乾杯。 –

関連する問題