2016-04-13 6 views
1

コンポーネントで角度1.5を使用する。カスタムディレクティブのパラメータを渡す

カスタムディレクティブが含まれているいくつかの親HTML:

<my-thing resetFields='$ctrl.bReset'></my-thing> 

EDIT:代わりresetFieldsの、ここで私はreset-fieldsを使用している必要があります - 私は、以下の未定義だこれはなぜでした。

親コントローラ: - myThingCtrl

alert(ctrl.reset); // alert is called in controller, but shows undefined 
function myThingComponent() { 
      this.controller = {}; 
      this.bindings = {}; 
      var component = this; 
      component.templateUrl = 'myThing.html'; 
      component.controller = myThingCtrl; 
      component.transclude = true; 
      component.bindings = { 
       resetFields: '<' // one way binding is needed 
      }; 
     } 

どのように私はこのようなパラメータを送信し、カスタムディレクティブのコントローラーでそれを使用することができます。

function parentController() { 
      var ctrl = this; 
      ctrl.bReset= true; 
     } 

ここmyThingためのコンポーネント宣言はありますか? リセット値がtrueの場合は、何らかのアクションを実行し、falseの場合は別のアクションを実行します。コンポーネントの方法で

angular.module("yourModule") 
    .directive("myThing",function(){ 
     return { 
      ... 
      restrict : "E", 
      scope:{ 
        reset:"=reset", 
        .... 
      }, 
      ..... 
      } 
     } 
    }); 

を:あなたは以下のようなディレクティブを作成しているachiveこのpropouseのために

+0

あなたは 'bReset'があなたの' $ scope'の変数であることを意味していますか? – Derlin

+0

親コンポーネントコントローラにはbReset値があります。 –

+0

あなたは私たちに最小限の例(JSFiddle)を与えることができますか? – Derlin

答えて

1

- (私は子コンポーネント内の親から値を読み取ることができますどのように私は推測する一般質問です。)

angular.module('yourModule').component('myThing', { 
... 
    bindings: { 
    reset: '=' 
    } 
}); 

キーポイント聞くが「=と(= rigth一部をリセット)あなたのディレクティブ内の属性がリセットという名前のスコープのプロパティにバインドされ(左部分にリセット)上記のようなスコープpropertieを使用し、そのリセットを言っています"あなたはyohが双方向データバインディング。私はこれがあなたに

+0

モジュールを使用していますが、コンポーネントを使用していますか? (私はこれらの角度の特徴を初めて知りました) –

+0

角度https://docs.angularjs.org/guide/componentの公式ガイドに従っています。このモジュールを使用してください。 –

+0

私はそのページに一日中座っています。まだ結果はありません。今私は進歩を遂げることができるようです。 –

0

を助けることができることを願っています

は、ここで私はそれがアニメーションのカウンタをレンダリング作っ簡単な指示からの例です。

function numberCounter($interval) { 
    var directive = { 
     restrict: 'E', 
     scope: { 
      start: '@start', 
      end: '@end', 
      speed: '@speed' 
     }, 
     template: '<% number | number : 0 %>', 
     link: link 
    }; 

    ... 
} 

次に、リンク機能内でscope.start、scope.end、およびscope.speedを使用できます。開始、終了、および速度は属性です。

関連する問題