2015-12-17 2 views
0

im using ngTable. Сортировка не работает.angularjs - ngTable не сортировка

Pagination работает хорошо, и он показывает все мои данные, как мне нужно. Но я не могу сортировать.

Я использую $data (я не знаю, что для), но все еще не могу сортировать.

Мой HTML:

<div class="panel-heading"> 
    <table ng-table="vm.tableParams"> 
    <tbody> 
     <tr ng-repeat="event in $data"> 
     <td data-title="'Nombre'" sortable="'name'"> {{ event.phone ? "Tex1" : Text2 }}</td> 
     <td data-title="'Dia Entero'" sortable="'entero'">{{ event.allDay ? '√' : 'X' }}</td> 
     <td data-title="'F. Inicio'" sortable="'inicio'">{{ event.start | date:'dd-MM-yyyy' }}</td> 
     <td data-title="'F. Fin'" sortable="'fin'"> {{ event.end | date:'dd-MM-yyyy' }}</td> 
     <td data-title="'Telf.'" sortable="'telf'"> {{ event.phone ? event.phone : '--' }}</td> 
     </tr> 
    </tbody> 
    </table> 
</div> 

Мои ЯШ:

// My data 
    [{ 
     "title":"Cerrado", 
     "start":"2015-12-24T23:00:00.000Z", 
     "allDay":true, 
     "backgroundColor":"#f05050", 
     "borderColor":"#f05050" 
    }, 
    { 
     "title":"Abierto", 
     "start":"2016-04-10T04:00:00.000Z", 
     "end":"2016-04-10T08:00:00.000Z", 
     "backgroundColor":"#43d967", 
     "borderColor":"#43d967" 
    }, 
    { 
     "title":"Mi Guardia", 
     "start":"2015-12-24T01:00:00.000Z", 
     "end":"2015-12-24T08:00:00.000Z", 
     "backgroundColor":"#5d9cec", 
     "borderColor":"#5d9cec" 
    }, 
    { 
     "title":"super farmacias", 
     "phone":"677889966", 
     "address":"Calle badajoz 200", 
     "start":"2016-01-06T02:00:00.000Z", 
     "end":"2016-01-06T09:00:00.000Z", 
     "backgroundColor":"#dde6e9", 
     "borderColor":"#dde6e9", 
     "textColor":"#555" 
    }] 

var data = vm.events; 

vm.tableParams = new ngTableParams({ 
    page: 1,  // show first page 
    count: 8,  // count per page 
    sorting: { 
    name: 'asc' 
    } 
}, 
{ 
    total: data.length, 
    counts: [], 
    getData: function($defer, params) { 
    // use build-in angular filter 
    var orderedData = params.sorting() ? 
     $filter('orderBy')(data, params.orderBy()) : 
     data; 

    $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
    } 
}); 

Я пытался в течение 2-х часов с большим количеством примеров и изменения $data для vm.values и создания других переменных и питания.

Любая идея, почему сортировать по: не работает?

Благодаря

+1

Каковы данные? Можете ли вы опубликовать его? –

+0

Да, я буду. дай мне секунду. – jBaumann

ответ

1

После проверки данных, вы должны модифицировали HTML код sortable = ключа объекта. Потому что, когда вы сортируете некоторые данные в таблице, используя ng-table, она основана на том, какие данные отображаются в таблице.
В этом случае это будут данные, которые вы только что опубликовали. И в ваших данных у вас нет поля под названием name, entero и т. Д. Поэтому функция сортировки не работает для вас.

<tr ng-repeat="event in $data"> 
    <td data-title="'Nombre'" sortable="'title'"> {{ event.phone ? "Tex1" : Text2 }}</td> 
    <td data-title="'Dia Entero'" sortable="'allDay'">{{ event.allDay ? '√' : 'X' }}</td> 
    <td data-title="'F. Inicio'" sortable="'start'">{{ event.start | date:'dd-MM-yyyy' }}</td> 
    ... 
</tr> 
+0

Действительно? Кажется, слишком легко в течение 2 часов моей жизни потрачено впустую. – jBaumann

+0

Спасибо вам большое. Потерпел 2 часа, пытаясь понять, почему не работает. Теперь я чувствую себя таким глупым. Вот в чем причина. Я думал, что могу назвать это так, как хочу, и в своем контроллере, когда я назвал его. – jBaumann

+1

Все, что имеет значение, это код работает! Наслаждайтесь взломом. –

1

Обычно для сортировки, функция reverseSort удобна, пожалуйста, попробуйте это сортировать

<th><a href="#" ng-click="orderByField='fieldName'; reverseSort=!reverseSort">Field Name</a></th> 
+0

Здравствуйте, спасибо за ваше время. Но результат был проще, чем ваш код. – jBaumann