Angularjs ng-repeat对象 - 重复值

时间:2016-03-24 21:33:39

标签: javascript angularjs object ng-repeat

我有一个具有如下数据结构的对象,

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>

我试图在表中看到的是,因为&#34; user1&#34;和&#34; user2&#34;有同样的名字,我希望打印一次,行数为2.这是可能的吗?

使用此数据,表格如下所示,

enter image description here

我试图得到的是,

enter image description here

2 个答案:

答案 0 :(得分: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"
};

答案 1 :(得分:0)

我没有看到使用rowspan的简单方法。但您可以使用angular.filter提供的groupBy过滤器执行此操作:

  <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>

这是一个plunk来演示。