目標: 2 つの兄弟要素 (それぞれ独自のディレクティブ) 間の通信を備えたディレクティブを使用して動作を作成します。
例で使用する動作: 記事のコンテンツはデフォルトで非表示になっています。タイトルをクリックすると、関連記事の内容が表示されるようにしたい。
問題点: 関連する article 要素は、単一の親要素またはディレクティブにネストすることなく、互いに関連付ける必要があります。
<div article="article1">this is my header</div>
<div id="article1" article-content>this is content for the header above</div>
<div article="article2">this is my header</div>
<div id="article2" article-content>this is content for the header above</div>
article ディレクティブ内にコンテンツを配置する方が簡単なのはわかっていますが、この質問は、このような状況を解決する方法を見つけることです。
content ディレクティブ自体を関連する article ディレクティブに渡すことはできますか?
このコードは今のままではあまり役に立ちませんが、出発点です。どうすればこれを達成できますか?
.directive('article', function(){
return {
restrict: "A",
controller: function($scope) {
$scope.contentElement = null;
this.setContentElement = function(element) {
$scope.contentElement = element;
}
},
link: function(scope, element) {
element.bind('click', function(){
// Show article-content directives that belong
// to this instance (article1) of the directive
}
}
}
}
.directive('articleContent', function(){
return {
require: "article",
link: function(scope, element, attrs, articleCtrl) {
// Maybe reference the article i belong to and assign element to it?
// I can't though because these are siblings.
}
}
}