2015-12-04 3 views
1

Это таблица:OrderBy не сортировать элементы в следующей таблице ngRepeat

<table class="table table-striped"> 
    <thead> 
    <tr> 
     <th class="col-md-1">Name</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr reportrowgroup="" ng-repeat="report in reporttree track by $index | orderBy:sortBy" report="report" rowindex="index" class="ng-scope ng-isolate-scope"> 
     <td><a href="#">Marcos Dima</a></td> 

(etc...) 

Это выпадающий OrderBy:

<select class="pull-right" ng-model="sortBy"> 
    <option value="createdAt">Sort by: <strong>Date</strong></option> 
    <option value="adminRealname">Sort by: <strong>Username</strong></option> 
</select> 

Содержание в reporttree (образец):

[ 
    { 
    "createdAt": "2015-08-12T13:06:54.901Z", 
    "adminRealname": "Marcos Dima", 
    }, 
    { 
    "createdAt": "2015-12-12T13:06:54.901Z", 
    "adminRealname": "Another name", 
    }, 

(etc...) 

Но когда я выбираю adminRealname или createdAt из выпадающего списка ничего случается. Я делаю что-то неправильно?

EDIT:

таблица является директивой, и это в отдельной таблице. Может, в этом проблема?

  ' </tr>'+ 
      '</thead>'+ 
      ' <tbody>'+ 
      '  <!-- <tr ng-repeat="report in reporttree track by $index"> -->'+ 
      '  <tr reportrowgroup ng-repeat="report in reporttree | orderBy:sortBy" report="report" rowindex="index"></tr>'+ 
      ' </tbody>'+ 
      '<!-- </div> -->'+ 
      '</table>' 
+0

try orderBy: 'sortBy' – Gianmarco

+0

Разве ваш раскрывающийся список и таблица принадлежат одному контроллеру? Так что обе ссылки на объект sam sortBy. –

+0

он отлично работает для меня до тех пор, пока ваши - это {{adminRealname}} формат – Jax

ответ

1

track by всегда должно быть последнее выражение

Вы можете прочитать на нем here

Пожалуйста см работает jsFiddle

var myApp = angular.module('application',[]); 

myApp.controller('TestController', function ($scope) { 
    $scope.data = [{ 
     createdAt: "2015-08-15T13:06:54.901Z", 
     adminRealname: "Marcos Dima"  
     },{ 
     createdAt: "2015-12-15T13:06:54.901Z", 
     adminRealname: "Another name"  
    }]; 
}); 

И в HTML

<div ng-controller="TestController as vm"> 
     <select class="pull-right" ng-model="sortBy"> 
      <option value="createdAt">Sort by: <strong>Date</strong></option> 
      <option value="adminRealname">Sort by: <strong>Username</strong></option> 
     </select> 
     <table class="table table-striped"> 
     <thead> 
      <tr> 
       <th class="col-md-1">Name</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr ng-repeat="dataItem in data | orderBy:sortBy track by $index" report="report"> 
       <td><a href="#">{{dataItem.adminRealname}}</a></td> 
      </tr> 
     </tbody> 
    </table> 
</div> 
Смежные вопросы