У меня есть ngGrid
, который пока работает нормально. Тем не менее, я хотел бы скрыть это, когда элементы не указаны, поэтому нет данных для отображения.
Что я пробовал:
<div class="gridStyle" ng-grid="gridOptions" ng-show="items.length > 0">
</div>
Это работает, он фактически скрывает сетку, когда items.length
равно 0
, но как только я добавлю данные в массив items
, сетка не будет отображаться.
Также не имеет значения, если я помещу директиву ng-show
во внешний div
:
<div ng-show="items.length > 0">
<div class="gridStyle" ng-grid="gridOptions">
</div>
</div>
Есть идеи, что я делаю неправильно?
Ответственный контроллер выглядит так:
(function (root) {
'use strict';
root.app.controller('listItemsController', [
'$scope', 'myService',
function ($scope, myService) {
$scope.items = [];
$scope.gridOptions = {
columnDefs: [
{ field: 'id', displayName: 'Id' },
{ field: 'type', displayName: 'Type' },
{ field: 'value', displayName: 'Value' }
],
data: 'items',
enableRowSelection: false
};
$scope.$on('navigation::selectedItem', function (evt, selectedItem) {
myService.getItems(selectedItem, function (err, items) {
$scope.items = items;
});
});
}
]);
})(window);
Получение элементов работает отлично, и установка их в сетке также работает отлично - IF я опускаю директиву ng-show
.
ОБНОВЛЕНИЕ
Хорошо, кажется, это проблема с первоначальным рендерингом. Как и в начале, элементов нет, свойство CSS display
установлено в none
. По-видимому, это позволяет избежать правильного рендеринга. Если вы переопределите это, используя
ng-hide: {
display:block!important;
}
в ваших стилях все работает как положено (кроме скрытой сетки, конечно).
div
вокруг этого, у которого есть контроллер. Или я что-то упускаю? - person Golo Roden   schedule 28.11.2013getItems
выглядит странно, потому что первый параметр функции обратного вызова — ошибка. - person Stewie   schedule 28.11.2013