Working PLUNKER
Чтобы решить эту проблему, я использую два угловых «фильтры», OrderBy, получающих свойство объекта AN сорт, что объект, основанный на этом. Второй - это 'Filter filter', который получает массив, выполняет некоторую операцию и отправляет ее обратно. Я использую ваш объект как $ scope.things.
Markup:
<body ng-app="app" ng-controller="ctrl">
<div ng-repeat="thing in things | orderBy: 'category' | thingsFilter">
<p>{{thing}} </p>
</div>
<h1>Hello Plunker!</h1>
</body>
Во-первых, я использую OrderBy, который будет заказывать массивом на основе things.category собственности. Затем, с упорядоченным массивом, я применяю угловой пользовательский фильтр.
app.js
app.filter('thingsFilter', function() {
return function (things) {
var filtered = []; //Return array.
for (var i=0; i< things.length; i++){ //Iterate over things.
if (i > 0) { //To make sure I won't compare with things[-1]
if ((things[i].category) != (things[i-1].category)) {
//If category of last item is different, add the name of category.
filtered.push("_____CATEGORY: " + things[i].category + ":");
}
} else { //Insert the first category.
filtered.push("_____CATEGORY: " + things[i].category + ":");
};
console.log(things[i]); //Just to see what is happening.
filtered.push(things[i].name); //Inserting the name of the thing.
};
console.log(filtered); //The final array to
return filtered; //be returned here.
};
});
На вход фильтра является то, объект, который был заказан OrderBy. Итак, у меня есть массив ORDERED. Теперь я создал фильтрованную переменную, в которой будет сохранено все значение, которое будет отправлено обратно.
Далее я ищу, чтобы увидеть, является ли переменная i больше нуля, поэтому я не буду сравнивать с отрицательным индексом и ошибка моего кода. Если индекс равен нулю, я добавлю строку категории.
Поскольку массив упорядочен, я могу проверить, отличается ли категория последнего массива от фактического. Если это так, я добавлю категорию в массив с помощью filter.push («____ CATEGORY ...»).
В конце каждого цикла цикла я буду выталкивать вещи [i] .name в возвращаемый массив. И, в конце, я верну фильтр, поэтому мой ng-repeat сможет его использовать.
Working PLUNKER
Plz добавить 'нг-repeat' шаблон на вопрос, и да, это может быть сделано – vinayakj
@vinayakj Обновлены с примером очень простой' нг-repeat' я в настоящее время работаю. – MattDionis
Пожалуйста, перейдите по этой ссылке, http://stackoverflow.com/questions/23493063/angular-ng-repeat-conditional-wrap-items-in-element-group-items-in-ng-repeat – vinayakj