2016-12-06 12 views
0

ディレクティブの外側で 'scope'引数を渡すにはどうすればよいですか? 私は...いくつかの他のコンポーネントにそれを使用する必要があるディレクティブの外側に 'scope'引数を渡す方法

私のコード:

(function() { 
angular.module('dmv.shared.components'). 
    directive('doImportPackage', ['Package', function (Package) { 
     return { 
      restrict: 'A', 
      scope: { 
       onStart: '<', 
       onFinish: '<', 
       onError: '<'}, 
link: function (scope, element, attributes) { 

    } 

TNX!

+0

ディレクティブ親 '$ scope'を自動的に継承します。 – Nirus

+0

親スコープにアクセスするには '$ scope。$ parent'を使用してください – azad

答えて

1

これはコントローラ経由で行うことができます。 AngularJSは双方向のデータバインディングの原則で動作するため、割り当てた変数は既に参照した場所から更新され、他のディレクティブでも使用できます。例えば、私は次のように、あなたのディレクティブを使用することを想定しています。あなたはmyCtrlのcontrollorで対応する変数以下のいる

<do-import-package 
    on-start="myCtrl.onStart" 
    on-finish="myCtrl.onFinish" 
    on-error="myCtrl.onError"> 
</do-import-package> 

:通常の状態では

this.onStart = some value; 
this.onFinish = some value; 
this.onErrod = some value; 

を、あなたは、これらの値に他のディレクティブの属性を結合することができ、彼らは双方向で更新されます。たとえば、次のディレクティブを使用する場合、両方のディレクティブを同じ値で更新する必要があります。

<other-directive 
    on-start="myCtrl.onStart" 
    on-finish="myCtrl.onFinish" 
    on-error="myCtrl.onError"> 
</other-directive> 
+0

ありがとうございます! これを上記のコンポーネントに渡す必要があります。 それは可能ですか? –

+0

上記のコンポーネントは何ですか?あなたが上記のコードのような例を与えることができれば助けたいと思います。 –

+0

私は2つのコンポーネント、 "tabsContainer"と "importTab"を持っています。 あなたが説明したように、私は "importPackage"ディレクティブの引数を "importTab"コンポーネントの外側に渡すことができます。 "tabsContainer"に上記の手順を1回渡す必要があります(一般に、アプリケーションのツリーは "tabsContainer"コンポーネントが "importPackage"ディレクティブを使用する "importTab" compenetsを呼び出します)。 –

関連する問題