Я использую пример группировки ng-таблицы из http://plnkr.co/edit/CBcbkc.
Прямо сейчас таблица инициализируется с расширенными строками, но я бы хотел, чтобы они были сведены к минимуму, поскольку у меня более 100 записей. Как я могу это сделать?
Я использую пример группировки ng-таблицы из http://plnkr.co/edit/CBcbkc.
Прямо сейчас таблица инициализируется с расширенными строками, но я бы хотел, чтобы они были сведены к минимуму, поскольку у меня более 100 записей. Как я могу это сделать?
Вы можете установить для group.$hideRows
значение true, используя ngInit
:
<tbody ng-repeat="group in $groups" ng-init="group.$hideRows = true">
Обновление
Я хотел найти лучшее решение, поскольку в документации по angular не рекомендуется использовать ngInit
для доступа к переменным области видимости.
Вы можете создать контроллер для каждой группы, созданной в ng-repeat
:
<tbody ng-repeat="group in $groups" ng-controller="groupCtrl">
Затем вы можете напрямую обращаться к групповому объекту. Одним из преимуществ этого будет возможность условного расширения группы:
.controller('groupCtrl', function($scope) {
if ($scope.group.value != 'Administrator')
$scope.group.$hideRows = true;
});
К вашему сведению
Мне интересно, почему я не могу найти никаких ссылок на $hideRows
в источнике. Оказывается, объект группы не имеет свойства $hideRows
до тех пор, пока он не будет нажат. Чтобы доказать это, я заменил $hideRows
выдуманным именем, и оно сработало точно так же.
<tbody ng-repeat="group in $groups">
<tr class="ng-table-group">
<td colspan="{{$columns.length}}">
<a href="" ng-click="group.invokeInvisbility = !group.invokeInvisbility">
<span class="glyphicon" ng-class="{ 'glyphicon-chevron-right': group.invokeInvisbility, 'glyphicon-chevron-down': !group.invokeInvisbility }"></span>
<strong>{{ group.value }}</strong>
</a>
</td>
</tr>
<tr ng-hide="group.invokeInvisbility" ng-repeat="user in group.data">
Неудивительно, что вы не смогли найти способ его инициализировать.
counts: [], // hide page counts control
total: 1, // value less than count hide pagination
- person j.wittwer; 21.07.2014
Вы можете указать ngTable не расширять его с помощью свойства 'groupOptions', см. ниже:
var table = new NgTableParams({ group: 'name' }, { dataset: users, groupOptions: { isExpanded: false } });
Просто добавьте groupOptions: {isExpanded:false}
в раздел параметров.
Ниже приведена копия вашего кода с соответствующим дополнением.
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 10, // count per page
groupOptions: {isExpanded:false}
}, {
groupBy: 'role',
total: data.length,
getData: function($defer, params) {
var orderedData = params.sorting() ?
$filter('orderBy')(data, $scope.tableParams.orderBy()) :
data;
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});