ディレクティブには、アーキテクチャ上の問題だけでなく、技術的な問題もあります。簡単な部分から始めましょう。
- 使用して
Tabs={...}
いますが、ディレクティブは呼び出されTabsDirective
ます。さらに、ディレクティブにはキャメルケースの名前が必要です。したがって、ディレクティブの名前を or のいずれかに変更する必要がありますtabs
(tabsDirective
ただし、ディレクティブの名前に「directive」を使用するのは少し冗長に思えます)。
<p>
div内でタグを使用していますresp-tabs-container
が、Easy Responsive Tabs のドキュメントによると、<div>
代わりにタグを使用する必要があります。
では大問題に。ディレクティブが実行されるとき、div
それが適用される のコンテンツはまだ Angular によって処理されていないため、link
関数が実行されて が呼び出される$(element).easyResponsiveTabs(...)
と、要素のマークアップは完全にはレンダリングされず、プラグインは単に機能しません。また、ディレクティブはコンテンツをラップする div に適用されるため、そのコンテンツのレンダリングの前に常に実行されます。
それを機能させるために使用できるハックがあります。easyResponsiveTabs
呼び出しを少し遅らせて、Angular が div コンテンツを完全にレンダリングするようにします。$timeout
そのためにサービスを利用できます。ただし、これは完全ではありません。遅延が十分でない場合は機能せず、EasyReponsiveTags プラグインによって変換される前に元のマークアップが表示される場合があります (遅延が長くなるほど、元のマークアップが長く表示されます)。プランカーのこのフォークはそれを示しています。
これを処理する正しい方法は、タブがレンダリングされる方法とタイミングを制御するディレクティブを作成することだと思います。やる気がある場合は、Angular のホームページの「コンポーネントの作成」セクションの例から始めてください。