(1)私はその内容を取り、いくつかの定型的なコードでそれをラップしportlet
呼ばtranscludingディレクティブを持っています。例えば:AngularJS:複数のディレクティブを継承する方法は?
<div class="portlet">
<div class="icon"></div>
<div class="content" ng-transclude="">
</div>
</div>
そして、次のようになります:
<portlet>
<div class="foobar">My content</div>
</portlet>
あるportlet
のテンプレート、経由する
<div class="portlet">
<div class="icon"></div>
<div class="content">
<div class="foobar">My content</div> <!--the original content
passed to portlet-->
</div>
(2)私は2つの以上のディレクティブ、dyn-form
とdyn-form-field
を持っています。このように説明:
<dyn-form>
<dyn-form-field type="textbox" placeholder="..." label="Name" />
<! ...and so on... -->
</dyn>
dyn-form
のテンプレート:
<form class="..." ng-transclude="">
</form>
各dyn-field
のテンプレートは、それのためのラベル/フィールドを生成するためのHTMLを生成します。だから、元のコードは、このような何かに翻訳されています
<form class="...">
<label>Name: <input type="text" placeholder="..." /></label>
<!- ....and so on... -->
</form>
(3)ここに問題があります。私は3番目の指示文dyn-form-portlet
を使用して、すべてのフォームの上に表示されているボタンを表示し、ポートレットを表示し、ポートレット内にdyn-form
を入れる定型コードを生成したいとします。これは私がこれをやろうとしている方法です:
<dyn-form-portlet>
<dyn-form>
<dyn-form-field />
</dyn-form>
</dyn-form-portlet>
dyn-form-portlet
のテンプレートは次のようになります。
<div class="dyn-form-portlet">
<button>Foo</button>
<button>Bar</button>
<portlet ng-transclude="">
</portlet>
</div>
Theoraticallyこれは<dyn-form>
が<dyn-form>
内<portlet>
、<dyn-form-field>
の内側に配置されなければならない、すなわち、動作するはずです、 等々。私はこれを実行したときしかし、私はdyn-form-portlet
によって表示されるボタンやportlet
ためのコードを参照してください、しかしportlet
は空で、フォームがそれに表示されていません。
私は何か間違っているのですか、これはバグですか?
関心のある人がいる場合にはplunkを作った:http://plnkr.co/edit/FUYCQbw8Tnx3Qhcj4108?p=previewポートレットからtrueを削除すると、それは機能しますが、意味は分かりません。 –
私はそれが起こっていると私は信じています。 'dyn-form-portlet'テンプレート内の' 'ディレクティブは、ディレクティブがリンクされる前にAngularでコンパイルされていますので、' dyn-form-portlet'が処理されるとテンプレート内の 'portlet'タグが既にレンダリングされています。この[Plunker](http://plnkr.co/edit/szuDxjGPB8id2yrto7zM?p=preview)を見て、コンソールの出力を確認してください。このような場合、これがバグか角度的な自然な振る舞いであるかどうかは分かりません。 –
@MichaelBenfordそれは本当に起こっているようだが、バグのようだ。つまり、 'dyn-form'の中のすべてのサブディレクティブは' dyn-form'に継承されています。なぜ 'dyn-form-portlet'と' dyn-form'の違いが違いますか?誰もAngularJSチームのバグとしてこれを報告できますか? –