Как сравнить результаты двух вычисленных свойств vuejs - PullRequest
0 голосов
/ 25 января 2019

В нашем приложении есть события, к которым могут обращаться пользователи, а также сообщения в блогах, посвященные различным событиям.Мы хотим показать пользователям все сообщения в блоге для событий, к которым они применили.

Каждый пост имеет идентификатор события, а каждый объект приложения содержит event.id.Мы хотим показать все посты, где идентификатор события равен одному из application.event.id.

Вот наши вычисленные свойства ...

computed: {
...mapState(['posts', 'currentUser', 'applications']),
myApplications: function() {
  return this.applications.filter((application) => {
    return application.user.id === this.currentUser.uid
  })
},
myEventPosts: function() {
  return this.posts.filter((post => {
    post.eventId.includes(this.myApplications.event.id)
  })
}

Как мы можемизменить meEventPosts, чтобы получить правильные результаты шоу?Спасибо!

1 Ответ

0 голосов
/ 26 января 2019

Этот вопрос в основном касается JS, а не Vue и вычисляемых свойств. Будет лучше, если вы создадите такой фрагмент кода в следующий раз, как я сделал ниже.

const posts = [{eventId: 1, name: 'Post 1'}, {eventId: 2, name: 'Post 2'}, {eventId: 3, name: 'Post 3'}];
const myApplications = [{eventId: 2, name: 'App 2'}];
const myEventPosts = function () {
	const eventsIds = myApplications.map((app) => app.eventId);
	return posts.filter((post) => eventsIds.includes(post.eventId));
}

console.log('posts:', myEventPosts());

Итак, ваше myEventPosts вычисляемое свойство должно выглядеть следующим образом:

myEventPosts: function() {
    const eventsIds = this.myApplications.map((app) => app.eventId);
    return this.posts.filter((post) => eventsIds.includes(post.eventId));
}
...