Использование угловых js для условного отображения HTML, но CSS портится, когда я помещаю HTML-код в операторы ng-if или ng-switch

0

Поэтому у меня есть сетка div, которую я пытаюсь динамически раскрашивать, проверяя значение булевых в ng-if, НО, когда я помещаю код внутри ng-если цвет и css из div перепутаны.

Например, следующий код:

<div class="rTableCellA" >1</div>

Отображает ячейку, которая отформатирована тонкой и цветной в соответствии с определением rTableCellA в CSS. Однако окружающая эта строка кода с ng-if, хотя и помешает цвету ячейки, причем только левая половина будет окрашена. То же самое происходит, когда я окружаю код с помощью ng-switch. ЗАЧЕМ?!

заранее спасибо

  • 2
    Какой-то реальный код был бы хорош
  • 0
    <div class = "rTableCellA"> 1 </ div> .rTableCellA {display: table-cell; обивка: 3px 10px; граница: 0.5px solid # 999999; цвет фона: # 006bb3; } Опять же, приведенный выше HTML-код работает нормально, пока я не окружу его символом ng-if, например так: <div ng-if = "day1Availability [0] == false"> цвет фона сетки искажается, и только половина имеет обозначенный цвет. похоже, что CSS как-то переопределяется нг-если
Показать ещё 7 комментариев

2 ответа

0
Лучший ответ

вы можете использовать ng-класс для вашего случая

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<style type="text/css">
    .rTable {
        display: table;
        width: 25%;
    }
    .rTableRow {
        display: table-row;
    }
    .rTableHeading {
        display: table-header-group;
        background-color: #ddd;
    }
    .rTableHead {
        display: table-cell;
        padding: 3px 10px;
        border: 0.5px solid #999999;
    }
    .rTableCellA {
        display: table-cell;
        padding: 3px 10px;
        border: 0.5px solid #999999;
        background-color: #006bb3;
    }
    .blockedOut {
        display: table-cell;
        padding: 3px 10px;
        border: 0.5px solid #999999;
        background-color: #ff9900;
    }
    .rTableHeading {
        display: table-header-group;
        background-color: #ddd;
        font-weight: bold;
    }
    .rTableFoot {
        display: table-footer-group;
        font-weight: bold;
        background-color: #ddd;
    }
    .rTableBody {
        display: table-row-group;
    }
</style>
</head>

<body ng-app>


<div class="rTable">
    <div class="rTableRow">
        <div class="rTableHead">
            <strong>Monday</strong>
        </div>
        <div class="rTableHead">
            <strong>Tuesday</strong>
        </div>
        <div class="rTableHead">
            <strong>Wednesday</strong>
        </div>
        <div class="rTableHead">
            <strong>Thursday</strong>
        </div>
        <div class="rTableHead">
            <strong>Friday</strong>
        </div>
        <div class="rTableHead">
            <strong>Saturday</strong>
        </div>
        <div class="rTableHead">
            <strong>Sunday</strong>
        </div>

    </div>
    <div class="rTableRow">
        <div ng-class="{rTableCellA: a == a}">1</div>
        <div class="rTableCellA">2</div>
        <div class="rTableCellA">3</div>
        <div class="rTableCellA">4</div>
        <div class="blockedOut">5</div>
        <div class="rTableCellA">6</div>
        <div class="rTableCellA">8</div>
    </div>
    <div class="rTableRow">
        <div class="rTableCellA">1</div>
        <div class="blockedOut">2</div>
        <div class="rTableCellA">3</div>
        <div class="blockedOut">4</div>
        <div class="rTableCellA">5</div>
        <div class="rTableCellA">6</div>
        <div class="rTableCellA">8</div>
    </div>
</div </body>

</html>

http://jsbin.com/bicidahega/1/edit?html,output

  • 0
    Спасибо, приятель!! Из любопытства, вы можете дать краткое резюме, почему использование ng-if в моем оригинальном методе не работало?
0

Это не относится к ng-if. Просто добавьте класс .rTableCellA в div с ng-if.

Проблема заключалась в том, что div внутри ng-if имеет класс .rTableCellA чтобы он не "брал" полную ширину из-за display:table-cell. Как на изображении ниже:

Изображение 174551

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>JS Bin</title>
    <style type="text/css">
      .rTable {     display: table;     width: 25%; } 
      .rTableRow {     display: table-row; } 
      .rTableHeading {    display: table-header-group;    background-color: #ddd; } 
      .rTableHead {    display: table-cell;    padding: 3px 10px;    border: 0.5px solid #999999; } 
      .rTableCellA { display: table-cell;   padding: 3px 10px;    border: 0.5px solid #999999; background-color: #006bb3; }
      .blockedOut { display: table-cell;   padding: 3px 10px;    border: 0.5px solid #999999; background-color: #ff9900; }
      .rTableHeading {     display: table-header-group;    background-color: #ddd;     font-weight: bold; } 
      .rTableFoot {    display: table-footer-group;    font-weight: bold;    background-color: #ddd; } 
      .rTableBody {     display: table-row-group; }
    </style>
  </head>
  <body>
    <div class="rTable"> 
      <div class="rTableRow"> 
        <div class="rTableHead">
          <strong>Monday</strong>
        </div> 
        <div class="rTableHead">
          <strong>Tuesday</strong>
        </div> 
        <div class="rTableHead">
          <strong>Wednesday</strong>
        </div> 
        <div class="rTableHead">
          <strong>Thursday</strong>
        </div> 
        <div class="rTableHead">
          <strong>Friday</strong>
        </div> 
        <div class="rTableHead">
          <strong>Saturday</strong>
        </div> 
        <div class="rTableHead">
          <strong>Sunday</strong>
        </div> 
      </div> 
      <div class="rTableRow"> 
        <div ng-if="'a' == 'a'" class="rTableCellA">1</div>
        <div class="rTableCellA" >2</div>
        <div class="rTableCellA" >3</div>
        <div class="rTableCellA" >4</div>
        <div class="blockedOut" >5</div>
        <div class="rTableCellA" >6</div>
        <div class="rTableCellA" >8</div>
      </div> 
      <div class="rTableRow"> 
        <div class="rTableCellA" >1</div> 
        <div class="blockedOut" >2</div>
        <div class="rTableCellA" >3</div>
        <div class="blockedOut" >4</div>
        <div class="rTableCellA" >5</div>
        <div class="rTableCellA" >6</div>
        <div class="rTableCellA" >8</div>
      </div>
    </div>
  </body>
</html>
  • 0
    Ну, мой код предназначен для того, чтобы решить, какой класс также установить div на основе результата ng-if. Поэтому, если ng-if имеет значение true, установите для внутреннего элемента div класс rTableCellA, а если для него значение false, установите для класса значение blockOut ... затем класс устанавливает цвет в соответствии с CSS. Я могу сделать это? Приведенный выше код не позволяет это, к сожалению.
  • 0
    Таким образом, вы можете использовать ng-class . Ты знаешь как это сделать?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню