ng-repeatでフィードを実装する必要があります。フィード項目は期限によって並べ替える必要があります。しかし、イベントや行動が異なるため、それぞれのアイテムに同じテンプレートを使用することはできません。このようなフィードイベントをレンダリングするにはng-ifを使用しますか?ng-repeatのテンプレートとオブジェクトが異なる
<ul ng-controller="FeedController as FeedCtrl">
<li ng-repeat="feedItem in FeedCtrl.feedFactory.feedItems | orderBy '-date_created'">
<div feed-comment-liked ng-if="feedItem.type == 'comment_liked'" item-info ="feedItem">
<div feed-comment-reply ng-if="feedItem.type == 'comment_reply'" item-info ="feedItem">
<div feed-friend-request ng-if="feedItem.type == 'friend-request'" item-info ="feedItem">
</li>
</ul>
これはもちろん、独自のテンプレートを使用して、それぞれ、feedCommentLiked、feedCommentReply、およびfeedFriendRequestと呼ばれるディレクティブの数を必要とし、結合アイテム情報を通じてデータを取得します。
私はこれは大丈夫だと思いますが、他の人たちがこの道を歩いていることを願っています。複数のng-repeatリストを含まない理由の中で最も明白な制約は、同じ「date_created」属性で順序付けする必要があることです。
ng-repeated要素のinnerHtmlにng-ifステートメントがないことを除けば、問題を1つのファイルに集中できます。しかし、それはそれについてです。良いアプローチかもしれない。 – chipmunkrumblestud
しかし、私はこの回避策がフレームワークを適切に活用していないと感じることはできません。 -/ – chipmunkrumblestud
この場合、ng-repeatに関する3xNの比較(if文)を実行していないのは正直な対応ではありません。マップから値を取り出し、テンプレートを適用するだけです。また、ng-includeを使用してサブスコープを作成することもありません。必要に応じてng-includeを使用できますが、その場合はN個のサブスコープを作成します。ですから、角度に対するネイティブソリューションは上記のng-includeとmap myConfigの使用になりますが、このソリューション(細いディレクティブを使用)ではパフォーマンスが向上します。私はng-includeソリューションで私の答えを更新しました – Melzar