Angularjs of-repeat object - повторяющиеся значения

0

У меня есть объект с структурой данных, как показано ниже,

data = {};

data[user1] = {
 name:  "apple",
 Company: "001"
};
data[user2] = {
 name:  "apple",
 Company: "002"
};
data[user3] = {
 name:  "orange",
 Company: "003"
};

Объект будет обновляться при добавлении нового пользователя

Я повторяю этот объект, используя ng-repeat, чтобы представить данные в табличном формате,

<table>
 <thead>
   <tr>
    <td>Name</td>
    <td>Company</td>
   </tr>
 </thead>
 <tbody>
   <tr ng-repeat="(key, value) in data">
     <td>{{$parent.data[key].name}}</td>
     <td>{{$parent.data[key].Company}}</td>
   </tr>
 </tbody>
</table>

То, что я пытаюсь увидеть в таблице, заключается в том, что, поскольку "user1" и "user2" имеют одинаковые имена, я хочу, чтобы однократно печаталось с помощью строки rows 2., что-то возможно?

С этими данными таблица будет выглядеть так,

Изображение 174551

что я пытаюсь получить,

Изображение 174551

Теги:
object
ng-repeat

2 ответа

0
Лучший ответ

Я не вижу простой способ использовать rowspan. Но вы можете использовать фильтр groupBy, предоставляемый angular.filter, для этого:

  <table>
    <tr ng-repeat='(key, value) in data | groupBy: "name"'>
      <td>{{key}}</td>
      <td>
        <table>
          <tr ng-repeat='item in value'>
            <td>{{item.Company}}</td>
          </tr>
        </table>
      </td>
    </tr>
  </table>

Вот демон, чтобы продемонстрировать.

  • 0
    Я реализовал вышеуказанное решение, и оно работает ... Спасибо. У меня просто есть другой вопрос, есть ли возможность доступа к индексу ng-repeat $ ребенка в parent. Я знаю, что для другого способа есть индекс $ parent. $, Аналогично, если нам нужен доступ к индексу child в parent, это то, что что-то выполнимое.
  • 0
    я просто пытался добавить ng-click и передать название компании в качестве параметра, как показано ниже: <table> <tr ng-repeat='(key, value) in data | groupBy: "name"'> <td ng-Click="someFunction(item.Company)">{{key}}</td> <td> <table> <tr ng-repeat='item in value'> <td>{{item.Company}}</td> </tr> </table> </td> </tr> </table>
Показать ещё 1 комментарий
0

Вы видите это, потому что вы, вероятно, ставите "имя" пользователя в переменной user1. пожалуйста, исправьте меня, если я ошибаюсь

используйте что-то вроде этого

data = {};

data[user1+""+data.length()] = {
 name:  "apple",
 Company: "001"
};

или используйте инкрементную переменную

var i = 0;
data = {};

data[user1+""+i] = {
 name:  "apple",
 Company: "001"
}; 
i++;

или полностью удалить user1

var i = 0;
data = {};

data[i] = {
 name:  "apple",
 Company: "001"
};
i++
data[i] = {
 name:  "apple",
 Company: "002"
};

Ещё вопросы

Сообщество Overcoder
Наверх
Меню