2016-10-13 6 views
2

私はAngularJSへのディレクティブを作成しています。どのようにディレクティブAの子である必要がありますか?この例のようにAngularディレクティブの定義方法は、特定のディレクティブの子である必要があります。

<my-modal> 
    <m-header>Header</m-header> 
</my-modal> 

m-headermy-modalの子で、そうでない場合は、あなたが努力にrequireパラメータを使用することができます

+1

のその直接の子は、[ 'require'](https://docs.angularjs.org/api/ngを見てみるとuが知ることができるで

if(elem.parent()[0].localName= 'my-model') { } 

を比較することができ /service/$ compile#-require-)。私は '^^'プレフィックスに興味があります。 –

+0

あなたはどのような指示をしていますか? 'my-modal'または' m-header'ですか? –

答えて

5

インクルードは、以下のコードのような親のディレクティブの必要とするいくつかの例外を発生する必要があります。 requireを使用するときにmyModalCtrl上で見ることができるよう

app.directive('mHeader', function() { 
    return { 
    require: '^^myModal', 
    restrict: 'E', 
    transclude: true, 
    link: function(scope, element, attrs, myModalCtrl) { 
     myModalCtrl.close(); 
    }, 
    templateUrl: 'my-header.html' 
    }; 
}); 

また、あなたは、親のコントローラにアクセスすることができます。

+0

m-ヘッダーをチェックする方法は、私のモーダルの子でなければならない –

+0

あなたの答えを説明する必要があります。接頭辞なしの 'require'は現在の要素に必要なコントローラを配置しようとしますが、Laiの条件を満たさないことに注意してください。 –

+0

私は努力していましたが、投稿を編集中に編集したためにブロックされました。私は誤って説明の一部を消してしまった。とにかく、あなたの助けに感謝:) –

0

これは回避策の1つです。あなたは、その要素

関連する問題