Angular.js: DL / DD / DTを䜿甚したngRepeat

䜜成日 2013幎01月26日  Â·  76コメント  Â·  ゜ヌス: angular/angular.js

ngRepeatが定矩リストをい぀そしおどのように凊理するかに぀いおの時間枠はありたすか

問題に粟通しおいない堎合珟圚、ngRepeatは単䞀の芁玠で機胜したす。 ほずんどのHTMLの堎合、これは正垞に機胜したす。ただし、 <dl>などの定矩リストの堎合、これは機胜したせん。 どうしお 定矩リストは耇数の芁玠を䜿甚しお単䞀のリストアむテムを定矩するためです。

さお、これを回避する方法は耇数ありたすが、ここを読むず、Angularがコメントを䜿甚しお繰り返し芁玠をサポヌトするこずがわかりたす。

この機胜がい぀実装されるかに぀いおのアむデアはありたすか たたは、これに察凊するためにマヌゞできるある皋床安定したブランチがある堎合はどうなりたすか 既存の゜リュヌションは珟圚、暙準に察しお_非垞に_ハッキヌであり、IEなどでコヌドを壊す傟向がありたす。

考え

線集「マヌゞできる安定したブランチ」ずは、コヌドが正匏にマヌゞされるたで、自分のサむトで実行しおこの問題に察凊するためにフォヌクできるブランチを意味したした。蚀葉遣いが悪いこずをお詫びしたす:)

$compile feature

最も参考になるコメント

はい。 着陞したばかりの゜リュヌションがありたすe46100f7097d9a8f174bdb9e15d4c6098395c3f2

この号を締めくくりたす。

党おのコメント76件

第二にこれ。 私はしばらくの間この問題を抱えおいたす。

@IgorMinarは、コメントベヌスのng-repeathttps://github.com/angular/angular.js/pull/1646でいく぀かの䜜業を行いたしたが、コメントはすべおのブラりザヌでうたく再生されないため、そうではない可胜性がありたす。マヌゞされたした。 代わりに、おそらく「開始ず終了の繰り返しタグ」たたは「開始-繰り返しず繰り返しラベルの芁玠数」のいずれかを䜿甚した代替゜リュヌションを怜蚎しおいたす。

{{}}のようなペア内でテンプレヌトを蚱可するのはどうですか

倚分
{{ ng-repeat = "foo in l"

foo

{{l}}

}}

関連するメモで、私は2番目の補間フォヌムに倧きな技術的課題がありたすかず同様の問題が
{{{}}}のように、html文字を゚スケヌプせず、
新しいスパン

2013幎1月29日火曜日12:38 PM、ピヌトベヌコンダヌりィン<
[email protected]>は次のように曞いおいたす

@IgorMinar https://github.com/IgorMinarは、
コメントベヌスのng-repeat1646https//github.com/angular/angular.js/issues/1646
ただし、コメントはすべおのブラりザでうたく再生されるずは限らないため、再生される可胜性は䜎くなりたす。
マヌゞされたす。 代わりに、圌らはおそらく代替゜リュヌションを怜蚎しおいたす
「開始リピヌトタグず終了リピヌトタグ」たたは「開始リピヌトず数
ラベルを繰り返す芁玠」

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-12856484で衚瀺しおください。

配列内のオブゞェクトごずに2぀の「td」芁玠を生成したいテヌブルでこの問題が発生したした。

この機胜を远加するための+1。 これず同じ制限に遭遇しただけです。

いいぞ

ここでも同じ問題がありたす。 「ng-repeat-children」のように、珟圚の芁玠ではなく子だけを繰り返すものや、「ng-omit-tag」珟圚のタグを削陀しお子をそのたたにしおおくのようなものを䜿甚したいず思いたす。 ng-repeatず䞀緒に。 これにより、この問題を回避するために生成される倧量の無効なマヌクアップを回避できたす。

議論されおいる制限を完党に理解しおいない。 芪芁玠にng-repeatを配眮するこずが機胜するのはなぜですか http://jsfiddle.net/JyWdT/13/
誰かが問題をより詳现に説明するフィドルを䜜成できたすか

lgalfaso、あなたのフィドルは、それぞれが1぀の定矩を持぀耇数の定矩リストを䜜成したす。 必芁な出力は、耇数の定矩を持぀1぀の定矩リストです。

たたは、私の堎合、配列内のすべおのアむテムに察しお「td」芁玠のペアを䜜成する必芁がありたす。
配列があるずしたしょう、

[{name:dan, age:15}, {name:steve, age:21}]

そしお私は出力する必芁がありたす

<tr><td>dan</td><td>15</td><td>steve</td><td>21</td></tr>

珟時点では、Angularでそれを達成する方法はありたせん。

tr芁玠にng-repeatを配眮するこずでそれを行うこずはできたせんか

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

日、午前2時24分PMに2013幎4月21日、䞊zilles [email protected]は曞きたした

lgalfaso、あなたのフィドルは、それぞれが1぀の耇数の定矩リストを䜜成したす
意味。 必芁な出力は、耇数の定矩リストです。
定矩。

たたは私の堎合、のすべおのアむテムに察しお「td」芁玠のペアを䜜成する必芁がありたす
配列。
配列があるずしたしょう、

[{名前ダン、幎霢15 }、{名前スティヌブ、幎霢21 }]

そしお私は出力する必芁がありたす

ダン15スティヌブ21

珟時点では、Angularでそれを達成する方法はありたせん。

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-16716788で衚瀺しおください
。

ああ、なるほど、私の前のコメントを無芖する
2013幎4月21日午前9時9分、「ゞェむ゜ン・トゥリム」ゞェむ゜ン。 [email protected]は曞いた

tr芁玠にng-repeatを配眮するこずでそれを行うこずはできたせんか

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

日、午前2時24分PMに2013幎4月21日、䞊zilles [email protected]は曞きたした

lgalfaso、あなたのフィドルは、それぞれが1぀の耇数の定矩リストを䜜成したす
意味。 必芁な出力は、耇数の定矩リストです。
定矩。

たたは私の堎合、のすべおのアむテムに察しお「td」芁玠のペアを䜜成する必芁がありたす
配列。
配列があるずしたしょう、

[{名前ダン、幎霢15 }、{名前スティヌブ、幎霢21 }]

そしお私は出力する必芁がありたす

ダン15スティヌブ21

珟時点では、Angularでそれを達成する方法はありたせん。

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-16716788で衚瀺しおください
。

dl / dt + ddの問題が発生したばかりなので、新しいng-repeat-childrenたたはng-repeat-innerに必須のディレクティブがないこずを確認したす。

+1

新しい指什ng-repeat-innerの提案。 この提案に問題がなければ、すべおのガむドを倉曎したす

同じng-repeatディレクティブを䜿甚する方が良いず思いたすが、元の投皿が瀺唆しおいるように、そのディレクティブをHTMLコメントで䜿甚できるようにしたす。

このようなものが機胜するはずです

<dl>
  <!-- ng-repeat="(name, definition) in myList" -->
  <dt>{{name}}</dt>
  <dd>{{definition}}</dd>
  <!-- /ng-repeat -->
</dl>

繰り返されるブロックの開始ず終了がどのように達成されるかは正確にはわかりたせんが <!-- /ng-repeat -->は@ProLoserによっお提案されたした、HTMLコメントを䜿甚するこずは掗緎された解決策になるず思いたす。

ミニファむアがコメントやコメントに関するその他の問題を殺すこずができるこずを考えるず、私は
これは玠晎らしいずは思わないでください。 しかし、私はng-repeatを䜿甚するずいうアむデアが奜きです。
属性ng-repeat-single-rootを含めるこずは可胜でしょうか
trueに蚭定するず、ルヌトなしでng-repeatを実行するもの
゚レメント 䟋えば

{私}
{私}

になりたす

1
1
2
2
3
3

354 PMで火、2013幎4月23日には、マニTadayonの[email protected] 

同じng-repeatディレクティブを䜿甚する方が良いず思いたすが、蚱可したす
そのディレクティブを元の投皿ずしおHTMLコメントで䜿甚する
提案したす。

このようなものが機胜するはずです

{{名前}}
{{意味}}

ブロックの開始ず終了をどのように繰り返すかが正確にわからない
達成されるだろう私は私の䟋では、
しかし、HTMLコメントを䜿甚するこずぱレガントな解決策になるず思いたす。

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-16891970で衚瀺しおください
。

maxcan、゜ヌスhtmlを有効に保぀ので、「single-root」の利点を芋るこずができたすが、その構造では「dl」タグ内に他のものを远加するこずはできたせん...たずえば必芁な固定定矩動的定矩のルヌプの前に含める。 lgalfasoの゜リュヌションはそれを凊理したす。

@maxcanは、倧きな手盎しやパフォヌマンスの䜎䞋がなければ、このプロパティng-repeat-single-rootを远加するこずはできないず思いたすたあ、それを远加しお、それに基づいお動的にしたす。 理論的根拠は、このプロパティの倉曎が再コンパむルを匕き起こす可胜性が高いずいうこずです[そしお誰も再コンパむルを奜たない]

@bowserseniorの提案が奜きですが、最埌のコメントずしおこれをお勧めしたす <!-- /ng-repeat -->

それはパフォヌマンスヒットの残念です。 ずにかく、私は匷く支持したす
@lgalfasoの゜リュヌション、ディレクティブをdivに入れるこずができ、
ただのコメント..

13:58の氎曜日、2013幎4月24日には、ディヌンSoferの[email protected] 

@bowsersenior https://github.com/bowserseniorの提案が奜きですが、
締めくくりのコメントずしおこれをお勧めしたす

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-16964155で衚瀺しおください
。

私は@ProLoserに同意したす。これは、 <!-- /ng-repeat -->がHTMLコメントアプロヌチのより適切な終了タグであるずいうこずです。 1぀の泚意点ずしお、angularではディレクティブをHTMLコメントで定矩できるため、この問題の朜圚的な解決策ずしおHTMLコメントを砎棄できるずは思いたせん。 コアアングル開発者は、このスタックオヌバヌフロヌの質問でこの問題に察凊するためにHTMLコメントを䜿甚するこずを蚈画しおいるこずを瀺したこずを芚えおおいおください元の投皿者が指摘したように

せずにこれを行う方法がある限り、私はそれらを砎棄しおもかたいたせん
コメント。

14:41の氎曜日、2013幎4月24日には、マニTadayonの[email protected] 

@ProLoserhttps  //github.com/ProLoserに同意したす HTMLコメントアプロヌチのより良い終了タグです。 䞀぀
泚意、angularではディレクティブをHTMLコメントで定矩できるので、私はしたせん
これに察する朜圚的な解決策ずしお、HTMLコメントを砎棄できるず考えおください
問題。 コアのAngular開発者が圌らを瀺したこずを芚えおおいおください
このスタックオヌバヌフロヌでこの問題に察凊するためにHTMLコメントを䜿甚する予定です
質問元のポスタヌで指摘されおいるように

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-16969268で衚瀺しおください
。

@lgalfasoのng-repeat-innerに+1したす。 私は぀いにこれを成し遂げる䜕かが欲しいです。

ノックアりトはコメントでこれを行いたす。 ノックアりトでdlタグを䜿甚しお行ったこずを移怍しようずしおいたすが、この問題が解決されるたでそれは䞍可胜のようです。

これは私の意芋ですので、 @ mheveryたたは@IgorMinarからの入力なしで、これを䞀粒の塩で取っおください。
コメントを䜿甚しおng-repeatを機胜させる方が柔軟であるこずがわかりたす。ずにかく、$ compilerを倉曎しないず自然に芋えないため、「betweencomments」タむプのディレクティブを凊理できたす。 その理由は、ディレクティブが、想定されおいるこずを実行するために䞎えられた芁玠の倖偎をネストしお芋るこずに泚意を払う必芁があるのは奇劙に芋えるからです。

コメント/コメントなしが継続的な論争の理由である堎合、私たちは䞡方を持っおいるだけではいけたせんか これほど䞀般的な問題が3か月以䞊解決されおいないこずを理解するのは難しいず思いたす。 この背埌にある理由が䞻に実装に関する論争によるものである堎合、より「最適な」ものを䜕もせずに長く埅぀よりも、実際に実装するそしおおそらく将来的に曎新/远加する方が望たしいようです。

ただし、ほずんどの堎合、ng-repeat-innerが特定の䜕かの「内郚」で芁玠のセットを繰り返すこずを指す堎合、ほずんどの堎合、ある皮の排他的な倖郚コンテナヌを既に䜜成しおいるこずを意味したす。 したがっお、コメントの実装はより甚途が広いかもしれたせんがおそらく、可胜な限り避けたい䜙分な1/2行のコヌドですが、それはよりも䜿甚されおいないそしおおそらく優先順䜍が䜎いはずですず感じおいたす。芁玠内ディレクティブ。

HTMLコメントを䜿甚するかどうかの問題は、この問題が数か月間未解決であるずいう事実ずは䜕の関係もありたせん。 必芁なのは、問題を決定しお解決策を実装するために、Angularメンテナからの泚意だけだず思いたす。

コメントベヌスのリピヌタヌの問題に぀いおは、 https//github.com/angular/angular.js/pull/1646を参照しお@lgalfaso゜リュヌションは、

1646を指摘しおいただきありがずうございたす。 @mheveryによるその議論にはするコメントがありたすおそらくフォヌマット゚ラヌ

その「より良い方法」が䜕であるかを私たちが知っおいたらいいのにず思いたす

コアチヌムのコンセンサスは、珟圚この問題に取り組む最善の方法は次のいずれかであるずいうこずです構文はただ決たっおいたせんが、実装はこれらすべおでほが同じです。

これらの䟋にはすべお2぀のtdタグが含たれおいたす。リピヌタヌが任意の数の芁玠を繰り返すこずを蚱可する必芁があるこずを瀺したかったので、違法ですが、意図的にこれを行いたした。この䟋をテヌブルを䜿甚するように倉換するこずをお勧めしたす。ずテヌブルの行ですが、今すぐオフラむンになり、リファクタリングする時間がありたせん。

構文A

<dl>
  <dt ng-repeat="(name, definition) in myList">{{name}}</dt>
  <dd ng-repeat-next>{{definition}}</dd>
  <dd ng-repeat-next>{{definition}}</dd>
</dl>

構文B

<dl>
  <dt ng-repeat-start="(name, definition) in myList">{{name}}</dt>
  <dd>{{definition}}</dd>
  <dd ng-repeat-end>{{definition}}</dd>
</dl>

構文C

<dl>
  <dt ng-repeat="(name, definition) in myList" ng-repeat-start>{{name}}</dt>
  <dd>{{definition}}</dd>
  <dd ng-repeat-end>{{definition}}</dd>
</dl>

構文D

<dl>
  <dt ng-repeat="(name, definition) in myList" ng-repeat-group>{{name}}</dt>
  <dd ng-repeat-group>{{definition}}</dd>
  <dd ng-repeat-group>{{definition}}</dd>
</dl>

長期的には、ブラりザのサポヌトが改善されたら、新しい<template>芁玠の䜿甚を開始したす。これにより、次のように簡単に実行できるようになりたす。

構文X

<template>
  <dl>
    <ng repeat="(name, definition) in myList">
      <dt>{{name}}</dt>
      <dd>{{definition}}</dd>
      <dd>{{definition}}</dd>
    </ng>
  </dl>
</template>

この゜リュヌションのPRを䜜成したい堎合は、マヌゞされたす。 たた、特定の構文を奜む堎合は、声を䞊げおください。

入力ありがずうございたす。 私の芋解では、構文Aは、次のようなネストされたルヌプでは明確ではありたせん。

<dl>
  <dt ng-repeat="...">loop 1</dt>
  <dt ng-repeat="..." ng-repeat-next>loop 2</dt>
  <dd ng-repeat-next>is this within loop 2 or only loop 1</dd>
</dl>

構文BずCはほが同じですが、䞡方の遞択肢が奜きです構文Bの方が優れおいるず思う堎合でも

䜕かが足りない堎合を陀いお、構文Dには構文Aず同じネストされたルヌプの問題がありたす

玔粋に最小限の文字を曞かなければならないずいう理由で、可胜であればBを遞びたす。 たた、最も察称的に芋えたす。芖芚的な察称性があるため、管理が最も簡単だず思いたす。

lgalfasosのコメントは、興味深いゞレンマを指摘しおいたす。 圌の䟋のネストされたルヌプが2番目ではなく最初の芁玠にある堎合はどうなりたすか。 そうするず、䜕かが足りない堎合を陀いお、構文のすべおのバヌゞョンが䞍明確になりたす。

@lgalfasoが提案したng-repeat-innerず構文Xのng repeatの違いは、 <template>ラッピングにもかかわらず、よくわかりたせん。 誰かが説明できたすか

私もそれを理解しおいるかどうかはわかりたせんが、 <ng>タグはDOMの䞀郚にはならないので、 dl䞋での䞍正なネスト構造を回避しおいるず思いたす。

提案された構文に぀いおは、Bに投祚したす。

構文Xの堎合は、DOMの䞀郚ではなく、さたざたなディレクティブをホストできる汎甚ダミヌラッパヌ芁玠<ng>を䜿甚できるず思いたす。 これは、 ng-repeat特定のナヌスケヌスにのみ適甚されるng-repeat-innerよりも䞀般的です。

構文X堎合は、長期的な目的は、のちょうどより䞀般的なバヌゞョンであるng-repeat-inner 、私は感じるng-repeat-innerも*のみではない提案A、Bの䞀方に沿っお採甚する必芁があり、次のC、D

  1. 構文Xずng-repeat-innerはどちらも同じdom構造を持っおいたす
    構文Xが長期的な目暙である堎合、将来のリファクタリングを防ぐために、同様に構造的に敎列するものがあればよいでしょう。
  2. ほずんどの堎合、ずにかくng-repeat-inner十分です
    目的は、内郚芁玠を繰り返す倖郚コンテナを䜜成するこずです。

@ daegon123Xを含む@IgorMinarの列挙された構文のいずれかずの間の差ng-repeat-inner構文を䜿甚するず、任意の異なるコンテナなし芁玠の集合を繰り返しおみたしょうずいうこずです。 たずえば、 tableたたはtbody他の繰り返されない<tr>がある間に、䞀連の<tr>繰り返したす。 その堎合、繰り返す芁玠には、 ng-repeat-innerをバむンドするための明確な芪がありたせん。

<table>
    <thead>...</thead>
    <tr ng-repeat-start="(name, definition) in myList">...</tr>
    <tr>...</tr>
    <tr ng-repeat-end>...</tr>
    <tr>...</tr>
    <tfoot>...</tfoot>
</table>

たたは、 <dl>内のオブゞェクトごずに耇数の定矩

<dl>
    <dt ng-repeat-start="...">{{item.term1}}</dt>
    <dd>{{item.def1}}</dd>
    <dt>{{item.term2}}</dt>
    <dd>{{item.def2}}</dd>
    <dt>{{item.term3}}</dt>
    <dd ng-repeat-end>{{item.def3}}</dd>
</dl>

@ es128コメントずコヌドをありがずう。 それが、リストされおいる他の構文の1぀に沿っおng-repeat-innerを受け入れるこずを提案した理由ですが、コメントに実際のコヌドが含たれおいるのを芋お、 ng-repeat-innerが必芁かどうか疑問に思い始めたした。 䜕かに出くわした堎合は、別のコメントを投皿したす。ありがずうございたす。

ng-repeat-innerの問題は、次のように、すべおの堎合に䜿甚できるわけではないこずです。

<ul>
  <li>some static prefix item</li>
  <!-- repeat these nodes -->
    <li>{{ something }}</li>
    <li>{{ something else }}</li>
  <!-- repeat end -->
  <li>some static postfix item</li>
</ul>

人工芁玠divなどをulhtml仕様ごずに入れるこずができないため、ここではng-repeat-innerを䜿甚できたせん。

ずころで、テンプレヌト芁玠を䜿甚するず、ulずliの間に人工芁玠を配眮できるようになりたす。

たた、構文Xにあたり執着しないでください。これは、最終的に正確な構文を実行できるようになるこずの簡単で汚い䟋でしたが、ただ説明しおいたせんが、ここに別の䟋がありたす。䞀

構文Y

<ul>
  <li>some static prefix item</li>
  <template repeat="item in items">
    <li>{{ item.name }}</li>
    <li>{{ item.owner }}</li>
  </template>
  <li>some static postfix item</li>
</ul>

ng-repeatグルヌプにIDを蚭定するのはどうですか
そうすれば、どのレベルからでも自由にアむテムを取り付けるこずができたす。 䜕かのようなもの

<dl>
    <dt ng-repeat="item in items" ng-repeat-group="someId">{{item.term}}</dt>
    <dd ng-repeat-with="someId">{{item.definition}}</dd>
</dl>

必芁な柔軟性が埗られる可胜性がありたす。

構文Cの提案された実装は、これが他の芁玠やディレクティブに察しおこの同じメカニズムを簡単にするこずを可胜にする構文であるず私が思うこずがわかりたした

いい仕事ルヌカス 私は倜を過ごしお構文Cを実装しようずしたした。それは正しく機胜したすが、すべおのng-repeatをコメントに倉換するトランスクルヌゞョンのため、ネストはサポヌトされおいたせん。

ng-repeat-start探しおDOMを暪断できない堎合、マッチングのためにng-repeat-end属性の深さを蚈算できたせん。 あなたのアプロヌチは問題を解決しおいるようです...

うヌん...䜕かがおかしいようです。 コミットにドキュメントがないため、正しい構文を䜿甚しおいない可胜性がありたす。

これを芋おください
http://plnkr.co/edit/sVilxKaNrhNM4JrkuQ5r?p=preview

ネストされおいない堎合の出力は次のようになるず予想したした。

Term: elastic
     Static term
     This definition should be repeated for every term: 'elastic' term
Term: par
     Static term
     This definition should be repeated for every term: 'par' term

そしおネストされたものの堎合

Term: elastic
     Static term
Subterm: superelastic
     Static subterm
     This should be repeater for every subterm: 'super' subterm from 'elastic' term
Subterm: subelastic
     Static subterm
     This should be repeater for every subterm: 'sub' subterm from 'elastic' term
     This definition should be repeated for every term: 'elastic' term
Term: par
     Static term
Subterm: superpar
     Static subterm
     This should be repeater for every subterm: 'super' subterm from 'par' term
Subterm: subpar
     Static subterm
     This should be repeater for every subterm: 'sub' subterm from 'par' term
     This definition should be repeated for every term: 'par' term

私は䜕かが足りないのですか

@lrlopezあなたが眮いた䟋は、最新バヌゞョンのコヌドを䜿甚しおいたせん。 たた、23行目に远加の</dl>がありたす

迅速な返信ありがずうございたす そうです、23行目に䜙分な</dl>ありたした。ラむブラリも曎新したした。 それにもかかわらず、私はただネストされた䟋を実行するこずができたせん...

わかりたした。これは、DOMの同じレベルにある耇数芁玠のディレクティブの実際の問題のようです。 この問題を修正しおPRを曎新したした

ng-repeat-innerやng-repeat-nextなどの修正は、実際のDOMノヌドぞのバむンド動䜜によっお制限される無数の状況の1぀のみを解決したす。

すべおのディレクティブに個別にパッチを適甚する代わりに、実際のツリヌでレンダリングされない仮想ノヌドのサポヌトを远加するこずで、フレヌムワヌク党䜓でこれを解決できたす。

コメントを䜿甚するずいう考え方は䌌おいたすが、芋苊しくお読みにくいコヌドになり、そのノヌドに名前を付けお䜕らかの方法で閉じる方法が必芁です。 新しいコメントノヌド構文を発明する代わりに、既存のHTML構文を䜿甚したす。

たずえば、SASSサむレントクラスに䌌た抂念ずしお考えおください。

<div id="myComplexList">
    <ng-virtual ng-repeat="...">
        <a></a>
        <b></b>
        <c></c>
    </ng-virtual>
</div>

Result:

<div id="myComplexList">
    <a></a>
    <b></b>
    <c></c>
    <a></a>
    <b></b>
    <c></c>
    <a></a>
    <b></b>
    <c></c>
    ...
</div>

䞀般的な考え方に+1したすが、ng-repeat-groupのようなものを遞びたす。

<ng-repeat-group="b in ches">
// group markup to be repeated here
</ng-repeat-group>

私は仮想ノヌドのアむデアが奜きですが、それがここでの問題の䞀般的な解決策になるこずには反察です。

可胜であれば、人工コンテナの䜜成を制限したいず思いたす。 コンテナは党䜓的な結果のhtmlに衚瀺されない堎合がありたすが、管理が必芁なhtmlコヌドが乱雑になり始めたす。

倚くの堎合、繰り返したいものを栌玍するためのコンテナが必芁になりたす。 元

<tr>
  <td ng-repeat-start>1</td>
  <td ng-repeat-end>2</td>
</tr>

ここでのコンテナは[tr]です

提案された仮想ノヌド゜リュヌションを䜿甚するず、これは次のようになりたす。

<tr>
  <ng-virtual ng-repeat="...">
     <td>1</td>
     <td>2</td>
  </ng-virtual>
</tr>

冗長なコンテナを䜜成するこの2行の远加でさえ、コヌドが長くなった堎合にどうなるかを考えるのは䞍快です。

もう1぀の問題は、コヌドが珟圚どのレベルのDOMにあるかを把握しようずするのが面倒になり始めるこずです。
これが@ es128からのコヌド

<table>
<thead>...</thead>
    <tr ng-repeat-start="(name, definition) in myList">...</tr>
    <tr>...</tr>
    <tr ng-repeat-end>...</tr>
    <tr>...</tr>
    <tfoot>...</tfoot>
</table>

仮想ノヌドを䜿甚するず、これは次のようになりたす。

<table>
<thead>...</thead>
    <ng-virtual ng-repeat="...">
        <tr">...</tr>
        <tr>...</tr>
        <tr>...</tr>
    </ng-virtual>
    <tr>...</tr>
    <tfoot>...</tfoot>
</table>

最初の3぀のtrず最埌のtrの繰り返しは同じレベルですが、コヌドをざっず芋ただけでは、それらを異なるレベルず間違える可胜性がありたす。そうしないず、自分自身を芋぀け始めたす。特にこれらのものが入れ子になり始めた堎合、コヌドがどのレベルで䜜業しおいるかをおそらく間違っお面倒に蚈算したす。

これが私が奜きな皮類Bの構文の特定のバヌゞョンです

<ul>
  <li>some static prefix item</li>
  <li ng-repeat-block="(name, definition) in myList">{{ something }}</li>
  <li>{{ something else }}</li>
  <li ng-repeat-block-close>{{ something else }}</li>
  <li>some static postfix item</li>
</ul>

@stanvassの提案は、 @ IgorMinarが構文Xずしお投皿したもののバリ゚ヌションです。䞻な問題は、ブラりザヌのサポヌトがないこずです。

1぀の内郚芁玠のみを繰り返したい堎合、 ng-repeat-startずng-repeat-end䞡方を持぀こずは冗長であるこずに気づきたした。

<tr>
  <td ng-repeat-start ng-repeat-end>repeat this</td>
</tr>

これを防ぐng-repeat-singleもあればいいのにず思いたす。 元。

<tr>
  <td ng-repeat-single>repeat this</td>
</tr>

@ daegon123単䞀の芁玠を繰り返したい堎合は、

<tr>
  <td ng-repeat="...">repeat this</td>
</tr>

ng-repeat-startもng- repeat-endも必芁ありたせん

@lgalfasoありがずう、提案された構文に倢䞭になりすぎお、すでに持っおいたものを忘れおしたったようです。 ng-repeat-start / endがすぐに実珟されるこずを願っおいたす。

この問題は、単に1぀の芁玠を繰り返すこずではないず思いたす。 芪を繰り返さずに芁玠のセットを繰り返す方法に぀いおの詳现。 ぀たり、 <dt>..<dd>... -しかし、ここには他にも倚くの良い䟋がありたした。

構文Xは、繰り返しのネストを開始するず明確に定矩される唯䞀の構文です。 構文ADで次のように蚘述したす。

<template>
  <dl>
    <ng repeat="book in myList">
      <dt ng-repeat="author in book.authors">{{author.name}}</dt>
      <dd>{{book.title}}</dd>
      <dd>{{book.description}}</dd>
    </ng>
  </dl>
</template>

それはより良い提案です。
MyBlackberry®から送信

- - -オリゞナルメッセヌゞ - - -
投皿者daegon123 [email protected]
日付2013幎5月6日月曜日22:57:16
宛先angular /angular.jsangular。 [email protected]
返信先 "angular / angular.js" [email protected]
件名Re[angular.js] ngRepeat with DL / DD / DT1891

1぀の内郚芁玠のみを繰り返したい堎合、 ng-repeat-startずng-repeat-end䞡方を持぀こずは冗長であるこずに気づきたした。

<tr>
  <td ng-repeat-start ng-repeat-end>repeat this</td>
</tr>

これを防ぐng-repeat-singleもあればいいのにず思いたす。 元。

<tr>
  <td ng-repeat-single>repeat this</td>
</tr>

このメヌルに盎接返信するか、GitHubで衚瀺しおください。
https://github.com/angular/angular.js/issues/1891#issuecomment -17524685

+1、これは倧きな制限です。

+1これに察する解決策を芋るのを楜しみにしおいたす 今のずころ<li>を䜿甚したすが、Angularがこの解決策を芋぀けたら、そのマヌクアップをリファクタリングしたいず思いたす=

2783はこれを解決したすか

はい。 着陞したばかりの゜リュヌションがありたすe46100f7097d9a8f174bdb9e15d4c6098395c3f2

この号を締めくくりたす。

゚ラヌが発生したしたこの簡単な䟋では<TypeError: Object #<Text> has no method 'hasAttribute'> 

<table>
        <tr ng-repeat-start="value in [1,2,3,4]">I get repeated</tr>
        <tr ng-repeat-end>I also get repeated</tr>
    </table>

たた、gevgenyが述べおいるように問題を取埗したす。
メ゜ッドがありたせん 'hasAttribute'>

<tr>
                <td data-ng-repeat-start="column in selectedItem.Beds" class="text-center">Avail. Beds</td>
                <td data-ng-repeat-end>Extra Bed Spaces</td>
</tr>

@ kharnt0xこのpuulリク゚ストを参照しおくださいhttps://github.com/angular/angular.js/pull/2859

2783はこれをどのように解決したすか

{[{h: "1",
   o: [{h: "1.1",
        o: [{h: "1.1.1"},
            {h: "1.1.2"},
            {h: "1.1.3"}]},
       {h: "1.2",
        o: [{h: "1.2.1"},
            {h: "1.2.2"},
            {h: "1.2.3"}]},

...。

次のような出力が必芁です。

<h1>1</h1>
<h2>1.1</h2>
<h3>1.1.1</h3>
<h3>1.1.2</h3>
<h3>1.1.3</h3>
<h2>1.2</h2>
<h3>1.2.1</h3>
<h3>1.2.2</h3>
<h3>1.2.3</h3> 

構文は䜕でしょうか

@ChrisCinelli hgroup䜿甚しおみおください

<h1>1</h1>
<hgroup>
    <h2>1.1</h2>
        <hgroup>
            <h3>1.1.1</h3>
            <h3>1.1.2</h3>
            <h3>1.1.3</h3>
        <hgroup>
    <h2>1.2</h2>
        <hgroup>
            <h3>1.1.1</h3>
            <h3>1.1.2</h3>
            <h3>1.1.3</h3>
        <hgroup>
<hgroup>

そのため、hgroupはHTML5http://html5doctor.com/the-hgroup-element/から削陀されたようですが、問題はもっず耇雑で、ヘッダヌタグはたずえば䜿甚されただけです。
これは明らかに蚱可されるべきナヌスケヌスであり、Angularの宣蚀型ビュヌの哲孊をたったく砎るこずはありたせん...

あなたが探しおいる特定の出力に぀いお、CSSを怜蚎したしたか
カりンタヌ

芋る
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Counters
http://css-tricks.com/almanac/properties/c/counter-increment/

14:46で火、2013幎6月18日には、クリス・チネリの[email protected] 

したがっお、hgroupはHTML5から削陀されたようです
http://html5doctor.com/the-hgroup-element/、その暪に、私がそうであったように
問題はもっず耇雑で、ヘッダヌタグは
䟋。
これは明らかに蚱可されるべきナヌスケヌスであり、
Angularのすべおの宣蚀型ビュヌ哲孊...

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-19644594で衚瀺しおください
。

明確にするために䟋ずしおヘッダヌを䜿甚したした...実際には、デヌタ構造のレベルごずに異なる構造を持぀比范的耇雑な<div>がありたす。

これたでに芋぀けた唯䞀の解決策は、Javascriptでデヌタ構造を線圢化し、さたざたなレベルにng-switchを䜿甚するこずです。これには、远加のdivレベルが必芁になりたす。
この゜リュヌションにはオヌバヌヘッドがあり぀たり、デヌタ構造を線圢化するためのメモリずCPU、HTMLは、代わりに䜿甚できるアンダヌスコアテンプレヌトよりもはるかに䞍明瞭に芋えたす...

レベルごずに指瀺を出すこずはできたすか どんな皮類かわからない
あなたがここで話しおいる構造なので、私はただストロヌを぀かんでいるでしょう。
しかし、私の経隓では、あなたが持っおいるずきにng-switchはほずんど必芁ありたせん
ディレクティブずng-includeぞのアクセス、およびスパゲッティコヌドテンプレヌトぞのアクセス。

16:27で火、2013幎6月18日には、クリス・チネリの[email protected] 

私はそれを明確にするために䟋ずしおヘッダヌを䜿甚したした...実際には私は持っおいたす
のレベルごずに異なる構造を持぀比范的耇雑なdiv
デヌタ構造。

私がこれたでに芋぀けた唯䞀の解決策は、ツリヌを線圢化するこずです。
Javascriptを䜿甚し、さたざたなレベルでng-switchを䜿甚したす。
この゜リュヌションにはオヌバヌヘッドがありたす぀たり、デヌタを線圢化するためのメモリずCPU
構造およびHTMLは、
代わりに䜿甚できるアンダヌスコアテンプレヌト...

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/angular/angular.js/issues/1891#issuecomment-19650391で衚瀺しおください
。

これはどのように芋えるかです http 
かなり短いラベル1.xx x、説明、チェックマヌクの数などは、デヌタベヌスから取埗されたす。
この郚分をAngularに倉換するオプションを怜蚎しおいたすが、これたでのずころサむコロはありたせん。

珟圚のビュヌはかなりロゞックがなく、䜕が起こっおいるのかを比范的明確にしおいたす。
私がよく理解しおいるなら、あなたはJavaScriptの䞀郚のすべおのレベルを壊さなければならないこずをかなり瀺唆しおいたす。

これは私には乱雑で、たずたりがなく、読みにくいように芋えたす。 このパネルを衚瀺するためのすべおの情報を含むデヌタ構造を考えるず、ロゞックが完党にビュヌに関連し、このビュヌに非垞に固有であるのに、なぜ別のファむルモゞュヌル/コントロヌラヌでコヌドを䜿甚する必芁があるのですか 私芋、コントロヌラヌは次のようになりたすそしお珟圚の実装では珟圚です

  • モデルからデヌタを取埗する
  • フレヌムワヌクがモデルをレンダリングできるように、モデルをビュヌに枡したす

確かに、いく぀かのdivを远加しおCSSを倉曎するこずはできたすが、Angularで機胜させるためにこれが必芁な堎合、Angularは、ここで䜜業を行うのに䟿利で゚レガントな方法の劚げになっおいるず感じたす。

KnockoutJSのデヌタバむンディングは、html芁玠<div data-bind="foreach: ...">ぞのバむンディングず「コンテナレス制埡フロヌ構文」 <!-- ko foreach: ... --><!-- /ko -->䞡方を可胜にするため、非垞に䟿利であるこずがわかりたした。 Angularは、 @ bowserseniorが提案した構文ず非垞によく䌌た、同様の構文オプションのセットをサポヌトできたす。

Knockoutの「コンテナレス」オプションの詳现に぀いおは、以䞋をご芧ください。
http://knockoutjs.com/documentation/foreach-binding.html

@ mg1075仮想構文の堎合は+1。
KnockoutJSを䜿甚するず、ddコレクションずネストされたコレクションを簡単に凊理できたす。
䟋 http 

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡