2015-12-16 11 views
5

私は数ヶ月前からAngularJSを使用していましたが、インターネットとAngularJS Directivesの本を調べて答えました。正確に機能「スコープ、要素、attrsに」内部のアイテムは何リンクとは何ですか?関数 "parameters"(scope、element、attrs)? AngularJS

link: function(scope, element, attrs) { 
    //body 
} 

ディレクティブでは、私はほとんどの場合、コードブロックを参照してください?これは愚かな質問かもしれませんが、どこでも答えを見つけることはできません。

ありがとうございます!

+0

あなたはgoogleにする必要があります。 http://www.angularjshub.com/examples/customdirectives/compilelinkfunctions/ –

答えて

5

scopeelement、およびattrsというパラメータは、ドキュメントhereに従ってカスタムディレクティブに定義されていますが、名前を変更することができます。

scope:これはコントローラ

element$scopeと同様に、カスタムディレクティブのスコープです:これは、カスタムディレクティブ

attrsの要素である:これは内の属性のセットですカスタムディレクティブ。あなたはmyDirectiveという名前のカスタムディレクティブを構築する場合、例えば、

(!、補正用@zeroflagLのおかげ要素の属性でなければなりません)、そしてあなたはおそらく、このようなあなたのhtmlパーシャルでそれを使用します。

<my-directive num-rows="3"></my-directive> 
をここで

num-rowsはあなたのディレクティブの属性であり、あなたはあなたのlink関数内でその値を取得できます。

function link(scope, element, attrs) { 
    console.log('num-rows:', attrs.numRows); 
    //you can change its value, too 
    attrs.$set('numRows', '10'); //attrs setter 

    //you can watch for its changes to trigger some event 
    attrs.$observe('numRows', function(newVal) { 
     console.log('trigger some event for the changes in numRows here'); 
    }); 
} 

また、上記のリンク機能では、あなたがする要素/ディレクティブをバインドすることができますアクション:

element.bind('click', function() { 
    console.log('do something with the click event'); 
}); 

ドキュメントを読むのに時間を費やすことをお勧めします。リンク関数は、カスタムディレクティブで必要とする別のディレクティブのコントローラである4番目のパラメータを取ることができます。例えば:

require: '^ngModel' 
.... 

function link(scope, element, attrs, ngModelCtrl) { 
    .... 
} 
+1

_ "attrs:これはカスタムディレクティブの属性セットです" _は "要素の属性"にする必要があります。 – zeroflagL

-1

範囲:これは、カスタムディレクティブのスコープで、コントローラ

要素$scopeに似て:これは、カスタムディレクティブの要素である

attrs:attrs以外のパラメータ

関連する問題