2017-02-22 17 views
-1

Angular JSでカスタムディレクティブを書く方法を学びます。私が最初のステップをした:ディレクティブのAngular JSに1つのパラメータを渡す方法は?

.directive("myClass", function(){ 
    return function (scope, element, attributes){ 
      // HERE TO GET PARAMETER AND COMPARE 
    } 
}); 

<div my-class="value"></div> 

私はswitch caseとディレクティブでこれを確認し、クラス名を返した後、my-classをディレクティブにパラメータを渡すvalueしてみてください。

この値はどのようにして取得できますか?

+0

の範囲このISNを隔離された値を取得するために$parseを使用することができます完全なディレクティブ定義。ディレクティブは一般的に関数を返さず、スコープ、テンプレート、コントローラなどを持つオブジェクトを返します。 – Claies

+0

[フィルタ](https://docs.angularjs.org/guide/filter)が必要なのかもしれません。 – isherwood

+0

ガイド(https://docs.angularjs.org/guide/directive)を読んで、より具体的な質問をしてください。 –

答えて

2

ディレクティブにパラメータを渡す方法はいくつかあります。 Directive Guideを参照してください。

Directive Definition Objectでscopeプロパティを使用する方法の1つは、値をリンク関数で使用できるようにすることです。

もう一つの方法は、あなたが属性を記録し、すべての利用可能なものを見るようにしてくださいディレクティブ で指定されたパラメータにアクセスするための属性を使用することができますあなたのケースでは、属性
を使用しています。

あなたはパラメータがディレクティブに値を渡す

.directive("myClass", function($parse){ 
    return function (scope, element, attributes){ 
      // HERE TO GET PARAMETER AND COMPARE 
      console.log(attributes); 
      console.log($parse(attributes.myClass)); 
    } 
}); 



<div my-class="value"></div> 
1

戻り値が正しくありません。これは次のようになります。

+0

ng-classのような指示をどのように使ってaatribute class = "red"を返しますか – Darama

+0

私はそれが 'restrict: 'C''であるべきだと思います – Darama

1

最も簡単な方法は、「ディレクティブ

angular.module("app",[]) 
 
.directive("myClass", function(){ 
 
    return { 
 
      restrict : 'A', 
 
      scope : { 
 
      myValue : '@' 
 
      }, 
 
      link : function (scope, element, attributes){ 
 
       console.log(scope.myValue) 
 
      } 
 
     } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" > 
 

 
    <div my-class my-value="value"></div> 
 
</div>

+0

あなたはコメントできますか?これはラインでsampe? – Darama

+0

@Darama申し訳ありませんが、私は理解していません –

+0

各行について説明できますか? – Darama

関連する問題