22

私は自分のhtmlファイルディレクティブに持っています

<add />
<back />

ディレクティブはフォームにあります

.directive('add', ['$window', ...

.directive('back', ['$window', 

これはうまくいきます。

ディレクティブをキャメルケースに変更した場合:

.directive('addPlayer', ['$window', ...

<add_player />
<back />

<add:player />
<back />

正常に表示されますが、

<add-player />  regular dash
<back />

のみ表示され<add-player>、それ以降はすべて表示されません。

理由はありますか?

編集:

私はここで同じ振る舞いをしました

http://plnkr.co/edit/cpP4c2TyZwv5Y4BrNUBb?p=preview

4

3 に答える 3

42

あなたの質問を解決するために、AngularJS チームの公式声明を引用します: (sic)

html 仕様で定義されている自己終了要素または void 要素は、ブラウザー パーサーにとって非常に特殊です。独自の要素を作成することはできないため、カスタム要素については、非 void 要素 ( <foo></foo>) に固執する必要があります。

これは角度で変更できません。

- イゴールミナール

ソース: https://github.com/angular/angular.js/issues/1953#issuecomment-13135021

AngularJS issue のページでの残りの会話に従ってください。そこでXHTMLは、ブラウザーで受け入れられる自己終了タグを使用してコンテンツを配信する可能性について議論しています。ただし、AngularJS では完全にはサポートされていないことに注意してください。

于 2014-07-29T09:47:38.123 に答える
6

最近同じ問題に遭遇し、自己終了タグを使用しないことで問題を解決できました。<add-player></add-player>自動閉鎖バージョンの代わりに試してください。

自己終了タグがディレクティブのタグ名のダッシュで機能しない理由がわかりません。その日に簡単な調査を行いましたが、HTML/XHTML 側では何も見つかりませんでした。おそらくAngularのバグ/制限ですか?

于 2013-08-07T13:54:21.080 に答える