2015-11-26 16 views
6

Chcę podświetlić cały rząd siatki kątowej, gdy mysz znajduje się na wierzchu.angular-ui-grid: jak wyróżnić wiersz po najechaniu kursorem myszy?

Próbowałem zmodyfikować wierszTemplate, dodając wywołania zwrotne ng-mouseover i ng-mouseleave, które ustawiają kolor tła.

Oto mój wierszTemplate - oczekuję, że pierwsze trzy linie zmienią cały kolor wiersza na czerwony. Ale zmienia się tylko komórka aktualnie pod myszą.

<div 
    ng-mouseover="rowStyle={'background-color': 'red'}; grid.appScope.onRowHover(this);" 
    ng-mouseleave="rowStyle={}" 
    ng-style="rowStyle" 
    ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" 
    ui-grid-one-bind-id-grid="rowRenderIndex + '-' + col.uid + '-cell'" 
    class="ui-grid-cell" 
    ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" 
    role="{{col.isRowHeader ? 'rowheader' : 'gridcell'}}" 
    ui-grid-cell> 
</div> 

Jak wyróżnić cały wiersz w przypadku zdarzeń najechania kursorem myszy?

Inne podejście, które próbowałem: używając funkcji wywołania zwrotnego, wykonaj to - podobnie jak appScope.onRowHover w przykładzie. Tutaj mam zakres rzędu, na którym się znajdujemy. Jak mogę stylizować ten wiersz w ramach funkcji onRowHover?

Dzięki!

Link to Plunkr. Spodziewam się, że przeskoczę nad komórką siatki, aby cały wiersz był czerwony.

Odpowiedz

7

Tutaj, jest. Wprowadziłem zmianę w szablonie wiersza. http://plnkr.co/edit/gKqt8JEo2FukS3URRLJ5?p=preview

RowTemplate:

<div ng-mouseover="rowStyle={'background-color': 'red'}; grid.appScope.onRowHover(this);" ng-mouseleave="rowStyle={}"> 
    <div ng-style="rowStyle" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" ui-grid-one-bind-id-grid="rowRenderIndex + '-' + col.uid + '-cell'" 
    class="ui-grid-cell" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" role="{{col.isRowHeader ? 'rowheader' : 'gridcell'}}" ui-grid-cell> 
    </div> 
</div> 
+0

Użyłbym 'ng-class' zamiast' ng-style', ale logika byłaby taka sama. – imbalind

+0

Dziękujemy! Rozumiem, że zewnętrzny div obejmuje cały rząd, podczas gdy wewnętrzny div zostaje rozszerzony do każdej komórki w rzędzie. Czy to jest poprawne? – ethan

30

(kątowe-ui-grid # 3.0.7) Najprostszym sposobem jest użycie stylów CSS wskaźnikiem, wystarczy dodać następujące do stylów CSS dla strony i jesteś cały zestaw:

.ui-grid-row:hover .ui-grid-cell { 
 
    background-color: beige; 
 
}


Z ui-grid 3.1.1 powyższe style nie działają. Musiałem to zrobić:

.ui-grid-row:nth-child(odd):hover .ui-grid-cell{background:red} 
.ui-grid-row:nth-child(even):hover .ui-grid-cell{background:red} 

Solution borrowed from here

+0

Rozwiązania oferowane przez inne odpowiedzi były błędne, ale ten był prosty i działał idealnie. Tak łatwo. Dzięki – Kabb5

+1

Upraszczanie rzeczy jeszcze dalej, jeśli nie potrzebujesz podkreślenia do zmiany, ponieważ wiersz jest parzysty lub nieparzysty, możesz po prostu zrobić ten wiersz '.ui-grid: hover .ui-grid-cell {background: red } '.Działa tak samo –

+0

Aby pracować z ngGrid, możesz użyć .ngRow: nth-child (nieparzyste): hover .ngCell {background: red} .ngRow: nth-child (even): hover .ngCell {background: red } –

0

Jest mały problem z rozwiązaniem SaiGiridhar: wybór podkreślając przestaje działać, ponieważ inny owinięcie jest dodawany na górze NG-repeat div.

Mała poprawka dla byłoby:

<div ng-mouseover="rowStyle={'background-color': (rowRenderIndex%2 == 1) ? '#76BED6' : '#BFDAE3'};" ng-mouseleave="rowStyle={}" ng-style="selectedStyle={'background-color': (row.isSelected) ? '#379DBF' : ''}"> 
    <div ng-style="(!row.isSelected) ? rowStyle : selectedStyle" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" ui-grid-one-bind-id-grid="rowRenderIndex + '-' + col.uid + '-cell'" 
     class="ui-grid-cell" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" role="{{col.isRowHeader ? 'rowheader' : 'gridcell'}}" ui-grid-cell> 
    </div> 
</div> 

Właśnie kopiowaniem wklejony mój kod. Dodaje alternatywne style wiersza dla zaznaczonych wierszy, a także poprawia zaznaczenie zaznaczonego wiersza.

Mam nadzieję, że komuś pomaga.

Powiązane problemy