从行的角动态建模列数据 [英] modelling data from rows to columns in Angular dynamically

查看:108
本文介绍了从行的角动态建模列数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有数据,看起来像这样:

I have data that looks like this:

$scope.items =[{name: "item1", year : "2013", value : "100"},
    {name: "item1", year : "2012", value : "97"},
    {name: "item1", year : "2011", value : "98" },
    {name: "item2", year : "2013", value : "-7" },
    {name: "item2", year : "2012", value : "-6" },
    {name: "item2", year : "2011", value : "-5" },
    {name: "item3", year : "2013", value : "93" },
    {name: "item3", year : "2013", value : "91" },
    {name: "item3", year : "2012", value : "93" },
    {name: "item4", year : "2013", value : "-35" },
    {name: "item4", year : "2012", value : "-36" },
    {name: "item4", year : "2011", value : "-37" },
    {name: "item5", year : "2013", value : "58" },
    {name: "item5", year : "2012", value : "55" },
    {name: "item5", year : "2011", value : "56" }]

我要呈现的数据,例如:

I want to render the data as such:

Name  2011 2012 2013
item1   98   97  100
item2   -5   -6   -7
tiem3   93   91   93
item4  -35  -36  -37
item5   58   55   56

我怎样才能做到这一点采用了棱角分明?
我理解ngRepeat的基础知识,但如果我这样做
NG-重复=(键,值)中的项目,然后value.name或value.year我对他们有15个实例,而不是仅仅ITEM1至第5项和2011年,2012年和2013。
理想情况下,我想有一个循环,使该年的列标题和另外一个循环,让我物品行的名单,那么我会用行,列参考值。任何想法?

How can I achieve this using Angular? I understand the basics of ngRepeat but if I do ng-repeat = "(key, value) in items" and then value.name or value.year I have 15 instances of them instead of just item1 to item 5 and 2011, 2012 and 2013. Ideally I would like to have one loop that gives the years for the columns headers and one other loop that gives me the list of items for the rows, then i would reference the values by rows, columns. Any ideas?

推荐答案

您可以使用_lodash得到帮助。

You can use _lodash to get helped.

脚本:

var app = angular.module('app',[]);
app.controller('TestCtrl',['$scope',function($scope){
  var items =[{name: "item1", year : "2013", value : "100"},
      {name: "item1", year : "2012", value : "97"},
      {name: "item1", year : "2011", value : "98" },
      {name: "item2", year : "2013", value : "-7" },
      {name: "item2", year : "2012", value : "-6" },
      {name: "item2", year : "2011", value : "-5" },
      {name: "item3", year : "2013", value : "93" },
      {name: "item3", year : "2013", value : "91" },
      {name: "item3", year : "2012", value : "93" },
      {name: "item4", year : "2013", value : "-35" },
      {name: "item4", year : "2012", value : "-36" },
      {name: "item4", year : "2011", value : "-37" },
      {name: "item5", year : "2013", value : "58" },
      {name: "item5", year : "2012", value : "55" },
      {name: "item5", year : "2011", value : "56" }]


      $scope.headCells = _.keys(_.groupBy(items, function(item){ return item.year}));
      $scope.rows = _.groupBy(items, function(item){ return item.name});

      $scope.sortByYearProp = function(values){
        return _.sortBy(values, function(value){
          return value.year;
        });
      }

}])

HTML

<table ng-controller="TestCtrl as test">
  <tr><th>Name</th><th ng-repeat="year in headCells">{{year}}</th></tt>
  <tr ng-repeat="(itemName, value) in rows"><td>{{itemName}}</td><td ng-repeat="obj in sortByYearProp(value)">{{obj.value}}</td></tr>
</table>

http://plnkr.co/edit/zvX6bsqicS5flD7BXzzN

这篇关于从行的角动态建模列数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆