6

何らかの形式のディレクティブがあります。通常はこれで十分ですが、入力フィールドをさらに追加する必要がある場合もあります。そのためにトランスクルージョンを使用しようとしましたが、うまくいきません。

それを説明するためにプランカーを作成しました:http://plnkr.co/edit/zNOK3SJFXE1PxsvUvPBQ?p=preview

ディレクティブは、入力フィールド、トランスクルージョン、およびそれをテストするためのボタンを備えた単純なフォームです (重要な部分は省略されていません)。

scope: {
},
transclude: 'element',
template: 
  '<form name="myForm">' +
  '<input type="text" ng-model="data.inDirective"></input>' +
  '<div ng-transclude></div>' +
  '<button ng-click="showData()">show data</button>' +
  '</form>'

そして、ここではトランスクルージョンで使用されています:

<form-as-directive>
  <input type="text" ng-model="data.inTransclude"></input>
</form-as-directive>

どういうわけかトランスクルージョンでディレクティブのスコープを使用できますか?

4

2 に答える 2

1

あなたが必要なもののよう$$nextSiblingです:

 scope.$$nextSibling.data.inTransclude

ここから:

トランスクルージョン スコープとアイソレート スコープの両方が存在する場合、アイソレート スコープ プロパティ $$nextSibling はトランスクルード スコープを参照します。

プランク: http://plnkr.co/edit/z2Bmfx?p=preview

于 2013-10-10T16:55:20.513 に答える