9

分離スコープを使用している場合は、属性に変数を渡すことができます。

すなわち

<my-directive baz='foo.bar'>

次に、ディレクティブの Javascript で

.directive('myDirective', function() {
  return {
    scope: {
      'baz': '='
    }
  }
});

継承されたスコープで同様のことを行う方法はありますか? リンク関数は文字列を渡すだけです。

現在、変数を自分で解析し、それを scope.$parent に一致させています。ヘルパー関数またはそれを行うためのより簡単な方法が必要なようです。

4

3 に答える 3

14

$evalまたはを使用$parse:

<my-directive baz='foo.bar'>

.directive('myDirective', function($parse) {
  return {
    scope: true,
    link: function(scope, element, attrs) {
        console.log(scope.$eval(attrs.baz));
        var model = $parse(attrs.baz);
        console.log(model(scope));
        // if you want to modify the value, use the model, not $eval:
        model.assign(scope, "new value");
    }
  }
});
于 2013-08-28T19:26:59.430 に答える
3

このコードで:

link: function(scope, elem, attrs) {}

あなたが使用することができます

attrs

このディレクティブに割り当てられたすべての属性を取得する要素。

次に、属性を任意のスコープに簡単に割り当てて、元のテンプレートで使用できます。

scope.someValue = attrs.attrName;

総括する:

指令:

  link: function(scope, elem, attrs) {
        scope.someValue = attrs.attrName;
    }

ディレクティブ テンプレート:

<div> {{someValue}} <div>

指令呼び出し

<my-directive attrName="foo"> </my-directive>
于 2014-07-22T14:47:59.710 に答える
0

ディレクティブでスコープ オブジェクトを宣言しない場合、分離されたスコープのセットアップは行われず、DOM で div が宣言されている場所から渡されたスコープにアクセスできます。

このようなもの:

.directive('myDirective', function() {
  return {
    function(scope, element, attrs){
      //scope here = the inherited scope from the DOM
    }
}

したがって、ディレクティブを DIV タグで宣言している場合、値を実際に属性として送信する必要はありません。スコープから取り出すだけで済みます。

于 2013-08-28T19:27:14.607 に答える