Добавить результат поиска в поле поиска ввода vue

Здесь у меня событие @click

<h2 @click = "action(customer.id)">{{ customer.name }}</h2>

При щелчке по любому результату добавьте этот результат к вводу. Любые идеи ?

<input class = "search" type = "text" name = "search" v-model = "search"  placeholder = "Search posts..."
       @focus = "magic_flag = true">
<div v-if = "magic_flag">
  <div class = "post" v-for = "customer in filteredCustomer">
    <h2 @click = "action(customer.id)">{{ customer.name }}</h2>
  </div>
</div>

Как я могу добавить результат поиска к вводу?

js здесь обновлено:

methods: {
            action(item) {
                this.selected = item
                this.search = item.name
                this.magic_flag=false;
            }
        },

Я показываю здесь обновленную остальную часть содержимого:

<div v-if = "selected">
                            <div class = "post" v-for = "customer in filteredCustomer">
                                <div v-if = "customer  === selected">
                                    <h1>{{ customer.name }}</h1>
                                    <h1>{{ customer.id }}</h1>
                                    <h1>{{ customer.address }}</h1>
                                </div>
                            </div>
                        </div>

вам нужно заполнить this.search внутри функции action. Передайте клиента как параметр к действию, а затем this.search =customer.name

Helping hand 09.09.2018 11:08

Я обновил свой вопрос, у меня есть метод, но мне нужно передать выбранное имя для ввода поиска

Petrit 09.09.2018 11:13

Где используется this.selected? ваша v-модель для ввода - search

Helping hand 09.09.2018 11:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
337
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо передачи customer.id методу действия вы можете передать объект customer в качестве параметра действия. Вы можете сделать что-то подобное.

var vm = new Vue({
    el: '#app',
    data: {
      search: "",
      filteredCustomer:[{name:'test1',id:1},{name:'test2',id:2},{name:'test3',id:3}]
   },
   methods: {
      action (customer) {
       this.search=customer.name
       this.filteredCustomer=this.filteredCustomer.filter(o=> o.id!=customer.id)
      }
   }
    
});
h2{cursor:pointer}
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js" type = "text/javascript"></script>

<div id = "app">				

  
  <input class = "search" type = "text" name = "search" v-model = "search"  placeholder = "Search posts..."
      >
<div >
  <div class = "post" v-for = "customer in filteredCustomer">
    <h2 href @click = "action(customer)">{{ customer.name }}</h2>
  </div>
</div>
</div>

Получил ошибку, TypeError: Cannot read property 'toLowerCase' of undefined

Petrit 09.09.2018 11:25

вы должны использовать toLowerCase где-то, что вызывает эту ошибку

Helping hand 09.09.2018 11:26

Плюс как я могу удалить поиск из списка ниже, просто отобразить результат при поиске ввода

Petrit 09.09.2018 11:27

Я получил имя, добавленное к вводу, спасибо, еще одна вещь, как я могу удалить его из списка ниже, когда он добавлен, чтобы у меня его не было дважды?

Petrit 09.09.2018 11:29

Вы можете добавить этот this.filteredCustomer=this.filteredCustomer.filter(o=> o.id!=customer.id), чтобы отфильтровать любое выбранное вами поле. Я обновил код

Helping hand 09.09.2018 11:32

Под добавлением вы имеете в виду, что непрерывно добавляете поля из списка одно за другим?

Helping hand 09.09.2018 11:34

Как я могу отображать другой контент, например, customer.id customer.address, когда я добавляю this.magic_flag=false;, я не могу показывать остальную часть контента по щелчку. У меня есть еще одна переменная, выбранная с помощью которой отображается остальное содержимое. Спасибо!

Petrit 09.09.2018 11:35

где используется this.magic_flag = false? Можете ли вы добавить соответствующий код к вопросу.

Helping hand 09.09.2018 11:37

Я обновил свой вопрос, у меня есть this.selected = item и еще один цикл v-for для отображения остальной части контента при нажатии одного имени из поиска <div v-if = "customer === selected">

Petrit 09.09.2018 11:42

Таким образом, я могу показывать остальную часть контента только тогда, когда поиск находится в фокусе, но мне нужно отображать остальную часть контента, когда я нажимаю один результат поиска, независимо от того, в фокусе или нет

Petrit 09.09.2018 11:45

Хорошо, я заставил это работать, большое спасибо @Helping hand очень помогла!

Petrit 09.09.2018 11:47

Рад, что это сработало, вы удалили v-if = "customer == selected", чтобы работала последняя проблема?

Helping hand 09.09.2018 11:50

нет, я только что удалил magic_flag из выбранного v-если он у меня там по ошибке, все работает, потому что это совершенно другой v-for. Спасибо, мужик!

Petrit 09.09.2018 11:54

Другие вопросы по теме