Angularjs从前到后显示双重重复数据,为什么?

时间:2015-08-30 18:45:22

标签: angularjs html-table angularjs-ng-repeat double

我的代码中有两个混淆点,

第一个, 这是我的HTML:

<table class="table table-hover" my-element="docu">

我使用了双重重复,但数据显示在前面。如何解决这个问题?

Angularjs文件:

这是数据:

$scope.people = [
    {'name':1,'des':'nice','age':12},
    {'name':2,'des':'good','age':13}
  ];
..........
.directive('myElement', function () {
  return {
    scope: {
      items: '=myElement'
    },
    restrict: 'EAC',
    template: '<tr ng-repeat="item in items" ><td ng-repeat="p in item">{{p}}</td></tr>'
  };
});

结果:

12  nice    1
13  good    2

结果应该是这样的:

1   nice    12
3   good    13

第二个,

我使用ng-if检查数据的长度,如果没有数据,表的主体显示为“上传文件”。但这句话总是出现在桌头上。我不知道为什么。如何解决这个问题?

HTML:

<tbody my-element="people">      
            <span ng-if="people.length == 0">Upload the file</span>
        </tbody>

我的结果(如果没有数据):

Upload the file
Name    Des Age

结果应该是这样的:

Name    Des Age
Upload the file

链接是我的代码,请检查一下:

http://codepen.io/AceSai/pen/ZbEExN?editors=101

2 个答案:

答案 0 :(得分:0)

因为你有一个对象数组,这意味着item是一个对象,而不是一个数组,所以我真的不明白为什么你希望按照你想要的顺序得到它。 但是,你只需要这样做ng-repeat

template: '<tr ng-repeat="item in items" ><td>{{item.name}}</td><td>{{item.des}}</td><td>{{item.age}}</td></tr>'

答案 1 :(得分:0)

第一个答案

我想第二次ng-repeat的语法应该是obj 中的(键,值)。

基本上,当对象键上的角度执行ng-repeat时,它会按字母顺序对键进行排序,这就是不期望输出的原因。

所以,如果你看到了。 你的输出:

年龄名称

12 nice 1

13 good 2

这是否有意义。

要解决此问题,您可以迭代数组并使用object.propertyName。

我没有得到你的第二个问题。 我怀疑有HTML订购问题。再解释第二个问题。