AngualRJSディレクティブにおけるアウトバウンド属性表現の活性化


これは手記です.

シナリオ
属性ディレクティブが必要で、コンポーネントを使用できず、ディレクティブを使用すると、親コンポーネントにデータを渡すことができます.
コンポーネントで使用できる& 結合.しかし、ディレクティブでは& 仕事をする.

解決策
指令制御装置
function ($scope, $attrs, $parse) {
  const exprFn = $parse($attrs.myDirective);

  const newScope = $scope.$new(false, $scope);
  newScope.variableToPass = 1234;

  exprFn(newScope);

  newScope.$destroy();
}
コンポーネント
<div my-directive="$ctrl.setValue(variableToPass)"></div>
  • $attrsはそれぞれの注入されたコンポーネント/ディレクティブのために付属の要素のattrsを含む特別なオブジェクトです.
  • If myDirectivemyDirective , また、$attrs オブジェクトとしてmyDirective 同名.
  • 角度$parse Serviceでは、Angularjs JavaScript式を表す文字列をアクティベーション機能にコンパイルできます.この関数は、その関数に与えられたparamsのコンテキストでその式を順番に実行することができます
  • 新しいスコープを作成するので、ディレクティブの外部ユーザーは、それらを必要とする場合には、指定した式にも親スコープ変数を使用できます.さもなければ、私たちはexprFn({ someVar: 1234 })
  • 新しいスコープは、リークを防ぐために配置する必要があります.