トランスクルージョンを使用して、属性を含むディレクティブ要素に含まれる要素を取得する入力フィールドのディレクティブがあり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