Мне нужно реализовать фид с 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-if в innerHtml элемента ng-repeat, я предполагаю, что вы можете централизовать проблему в одном файле. Но это все. Может быть, хороший подход. – chipmunkrumblestud
Но я не могу поколебать ощущение, что это обходное решение не использует фреймворк должным образом: -/ – chipmunkrumblestud
Это не обходной путь, если быть честным в этом случае, вы не выполняете сравнения 3xN (если утверждения) относительно ng-repeat. Вы просто берете значения с карты и применяете шаблон. Более того, вы также не создаете подкоды, которые вы использовали бы с помощью ng-include. Вы можете использовать ng-include, если хотите, но в этом случае вы создадите N подкопов. Таким образом, нативным решением для углового было бы использование ng-include и map myConfig выше, но это решение (с тонкой директивой) имеет лучшую производительность. Я обновил свой ответ с помощью решения ng-include – Melzar