Isolution666
@Isolution666
Full-Stack Developer

Как грамотно извлекать отдельную запись через Vue JS по id?

Здравствуйте
--
Предыстория:
Изучаю Vue JS, и увидел в этом фреймворке массу возможностей. В документации есть базовые вещи, которые мусолят на ютубе, и ничего нового. Если пытаюсь найти что-то более продвинутое, то обучение платное, и не факт, что там есть что-то полезное и новое, что не показывают в свободном доступе. Есть книги, которые рекомендуют для того чтобы стать профессионалом в технологиях Vue JS, кто читал, напишите свой отзыв.
https://leanpub.com/vuejs2-russian
https://www.piter.com/collection/all/product/vuejs...
Разработки на Vue JS, я использую для себя и для опыта, то есть это я делаю не для кого-то, а себе.

Вопрос:

Есть вьюшка:
<div id="apps">
<button>Входящие {{ mail.length }}</button>
		<table class="table table-hover">
			<tr class="font-weight-bold cp" v-for="key in mail" :id="key.id" @click="$emit('show', key.id)">
				<td>{{ key.id }}</td>
				<td>{{ key.text }}</td>
				<td>{{ key.date }}</td>
			</tr>
		</table>
</div>

Чтобы взаимодействовать с html, я обращаюсь к Vue JS:
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
	<script>
		var app = new Vue({
		  el: '#apps',
		  data: {
			selected: null,
			mail: [
				{id: 1, text: 'Изучить этот JavaScript', date: '22.09.2018 в 11:00'},
				{id: 2, text: 'Изучить Vue', date: '22.10.2019 в 12:02'},
				{id: 3, text: 'Создать что-нибудь классное', date: '15.11.2019 в 11:22'},
				{id: 4, text: 'Новое сообщение от Эмили', date: '22.12.2019 в 21:07'}
			],
		  },
		  components: {
			'mail': {
			  template: '#mail',
			  props: [ 'id' ],
			},
		  },
		  methods: {

		  }
		})
	</script>


Задача на самом деле простая, получить id, и вывести конкретную запись:
<template id="mail">
  <div class="block">
    <button @click="$emit('show', id)">Назад</button>
    <div v-for="i in id">
	{{ i.id }} {{ i.text }} {{ i.date }} 
    </div>
  </div>
</template>


Может я не правильно понял документацию, потому как получить отдельную запись из json файла не могу, не работает.
Что я делаю не так? В чём моя ошибка?

Результат:
5d5ad8809cd4e430345534.png
  • Вопрос задан
  • 666 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Кладём данные в vuex, компоненты списка сообщений и отдельного сообщения вешаем на разные роуты. Последний будет принимать id в качестве параметра и пробрасывать его в компонент. В самом компоненте добавляем вычисляемое свойство - по id из хранилища извлекается нужный объект. Например.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы