Mam listę słów z liczbą (smugą) przypisaną do każdego słowa. Ustawiam kolor tła każdego słowa na podstawie numeru przypisanego do niego przy użyciu ng-stylu AngularJS.Zmiana koloru tła po najechaniu kursorem po ustawieniu stylu z użyciem stylu ng
html
<ul class="unstyled">
<li class="tHi" ng-repeat="item in items" ng-click="getEdit(item.word)" ng-style="bgstyle(item.streak)">
<span>{{item.word}} {{item.streak}}</span>
</li>
</ul>
javascript, która jest wywoływana z NG-stylu.
$scope.bgstyle = function (streak) {
var red = 255;
var green = 255-streak;
var blue = 255-streak;
var rgb = blue | (green << 8) | (red << 16);
var sColor = '#' + rgb.toString(16);
return {backgroundColor: sColor};
}
Działa to jednak, chciałbym podświetlić tło, gdy mysz unosi się nad słowem. Dodałem klasę "tHi", która normalnie zmieniałaby tło po najechaniu kursorem, ale została nadpisana przez dodany styl.
Oto jsfiddle, który demonstruje ten problem.
Czy istnieje lepszy sposób ustawiania tła niż styl ng, aby odpowiadał numerowi przypisanemu do każdego słowa? A może jest jakiś sposób podkreślenia, gdy użytkownik unosi się nad słowem?
Podoba mi się twoja odpowiedź jako przykład użycia dyrektywy i ng-mouseover. Dziękuję Ci. Również twoja odpowiedź uświadomiła mi coś, co wcześniej mi się nie przydarzyło. Najprostszym rozwiązaniem byłoby dodanie klasy "tHi" do zakresu, a nie do li. W ten sposób nie potrzebuję! Ważne ani dyrektywy. Tak jak powiedziałeś, unikasz konfliktu ze stylem ng. – Daniel
Wielka obserwacja. (I unika tego dodatkowego wiązania zdarzeń i oglądania $). –
To jest całkowicie ortogonalny komentarz, ale jeśli tylko stosujesz klasę do stylu, zawsze możesz użyć dobrego ol CSS i zdefiniować: hover. – chug2k