Как управлять стилем родительского элемента с помощью CSS и VueJS? - PullRequest
0 голосов
/ 06 июня 2018

Я перебираю группу пользователей, чтобы построить таблицу, используя VueJS 'for'.

Есть столбец с именем «утверждено».Если это правда, тогда я хочу, чтобы вся строка таблицы была зеленой.Как этого добиться?

                <tbody>
                  <tr v-for="user in users" >
                    <td v-for="key in columns">
                        <!-- At This point I can tell if the user is approved but how to change the style of the parent tr element?? -->
                        <span v-if='key == "approved" && user[key] == 0'>
                            Not Approved
                        </span>

                        <span v-else-if='key == "approved" && user[key] == 1'>
                            Approved!
                        </span>

                        <span v-else>
                            {{user[key]}}
                        </span>
                    </td>
                  </tr>
                </tbody>

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Если у вас всегда есть «утвержденный» столбец, вы можете просто достичь его следующим образом:

<tr v-for="user in users" 
    v-bind:style="{backgroundColor: user['approved'] == 1 ? 'green' : '' }">

или

<tr v-for="user in users" 
    v-bind:class="{green: user['approved'] == 1}">


.green {
     background-color: green:
} 
0 голосов
/ 06 июня 2018

Вы можете использовать метод для динамического присвоения tr класса

<tbody>
  <tr v-for="user in users" :class="{'green': isApprove(user, columns)}">
    <td v-for="key in columns">
        <!-- At This point I can tell if the user is approved but how to change the style of the parent tr element?? -->
        <span v-if='key == "approved" && user[key] == 0'>
            Not Approved
        </span>

        <span v-else-if='key == "approved" && user[key] == 1'>
            Approved!
        </span>

        <span v-else>
            {{user[key]}}
        </span>
    </td>
  </tr>
</tbody>


<script>
  ...
  methods: {
    isApprove(user, columns) {
      for (let idx in columns) {
        const key = columns[idx]
        if (key === 'approved' && user[key] == 1) {
          return true
        }
      }
      return false
    }
  }

</script>

<style>
.green {
  background-color: green;
}
</style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...