#javascript #html #firebase #vue.js
# #javascript #HTML #firebase #vue.js
Вопрос:
Мой проект похож на Twitter.
Что я могу сделать:
- показывать сообщения
- показывать лайки (числа) в реальном времени
Что я не могу сделать:
- показывать изменения цвета в каждом значке like
Вот код:
Моя база данных Firestore:
posts {
content: string,
likes: 0,
}
Vue:
<li v-for="post in posts" :key="post.id">
<p>{{ post.content }}</p>
<div>
<v-icon @click="posts(post.id)">mdi-heart</v-icon>
<span> {{ post.likes }} </span>
</div>
</li>
JavaScript:
method: {
like () {
if (I didn't like) {
// change the color of like icon of the post.
} else {
// change the color back.
})
}
}
Итак… Как я могу изменить цвет для значка «Нравится» для каждого сообщения?
(работаем над новейшими версиями Vue.js , Vuetify, Nuxt.js , Огневая база.)
Комментарии:
1. Похоже, вам, возможно, придется изучить CSS для оформления ваших HTML-элементов.
2. Привет, Даг, спасибо за комментарий. Я думаю, что CSS не может изменить «каждый» элемент в списке. CSS изменяет каждый элемент.
3. Вы можете стилизовать каждый элемент отдельно, если хотите.
4. Я понятия не имею об этом… Не могли бы вы рассказать мне больше, пожалуйста?
5. Подсказка: используйте
v-bind.style
илиv-bind:class
. Эти варианты использования описаны в документации: vuejs.org/v2/guide/class-and-style.html
Ответ №1:
<template>
...
...
<div :class="bindLike">
<v-icon @click="posts(post.id)">mdi-heart</v-icon>
<span> {{ post.likes }} </span>
</div>
</template>
<script>
export default {
computed: {
bindLike: function() {
return post.likes > 0 ? 'liked' : 'notliked';
}
},
}
</script>
<style>
.liked { background: blue; }
.notliked { background: transparent; }
</style>
это может сработать для вас ..!
Но идеальным было бы создать новый компонент PostLikes
и режим передачи, считающийся реквизитом.