0

トランスクルージョンを使用して、属性を含むディレクティブ要素に含まれる要素を取得する入力フィールドのディレクティブがありng-modelます。無数の SO の質問と Angular のドキュメントを読んng-modelで、トランスクルードされた html をディレクティブの と同期させる方法を見つけたng-model後、ついにそれを機能させるためのトリックに出くわしました。つまり、入力フィールド内のを使用$parentします。ng-modelこれはすべてうまくいきますが、不格好/ハックのようです。

ここに示されているプラ​​ンカー: http://plnkr.co/edit/gEje6Z2uuTs9DFPeCZfv

リンク関数内のトランスクルージョン関数を次のようにいじって、これをもう少しエレガントにしようとしました。

```

      var transcludedContent, transclusionScope;

      transcludeFn(scope, function(clone, scope) {
        //headerCtrl.$element.append(clone);
        transcludedContent = clone;
        transclusionScope = scope;

        console.log('scope form: ', scope);
        console.log('transclude form: ', clone);


      });

```

また、このプランカーに示されています: http://plnkr.co/edit/11k9LiA5hyi4xydWBo3H?p=preview

トランスクルージョン関数を使用すると、トランスクルージョン スコープをディレクティブのスコープで上書きでき、ng-model属性がディレクティブ スコープに関連付けられてバインドされると考える人もいるかもしれませんが、そうではありません。

は機能しますが、非常にハックなようで、オブジェクトが定義され $parent.<ng-model>ていない親スコープでディレクティブが使用されなかった場合など、バグにつながる可能性があります。account

4

1 に答える 1