Выдать событие с параметрами в vue - PullRequest
0 голосов
/ 12 декабря 2018

я пытаюсь вызвать функцию с такими параметрами.

template: `
    <div class="searchDropDown">
    <div class="dropdown is-active">
    <div class="dropdown-trigger">
      <button class="button" aria-haspopup="true" aria-controls="dropdown-menu">
        <span>{{selectedItem}}</span>
      </button>
    </div>
    <div class="dropdown-menu" id="dropdown-menu" role="menu">
      <div class="dropdown-content">
        <a class="dropdown-item" v-for="item in drop" @click="$emit('select-menu-item($event)')">
          {{item.name}}
        </a>
      </div>
    </div>
  </div>
    </div>
  `

вот я пытаюсь передать элемент методу как параметр.

вот мой компоненткоторый я пытаюсь вызвать функцию:

<search-component v-bind="searchProps" @select-menu-item="selectedITem($event)"></search-component>

и вот мой метод:

selectedITem(arg1) {
      console.log("cl")
      console.log(arg1)
    }

здесь, если я не пытаюсь передать параметр, все работает хорошо, поэтому мой метод selectedITem работает.Когда я пытаюсь передать параметр таким образом, ничего не происходит, и я не получаю какую-то ошибку.

1 Ответ

0 голосов
/ 12 декабря 2018

Следующие аргументы в $emit() являются аргументами в вашей переданной функции.

$emit('select-menu-item', $event, 1, 2, 3, 4, "cupcakes")

и в методе вашего компонента.

selectMenuItem: function(evt, num1, num2, num3, num4, food){

}

И в вашем фактическом компонентеразметки.Вам не нужно добавлять аргументы.Просто напишите ссылку на метод

<search-component v-bind="searchProps" @select-menu-item="selectMenuItem">

SAMPLE

window.onload = function(){
 const component = function() {
    return {
       template: `
       <div>
         <button @click="$emit('click-me', 'foobar')">
            Click Me
         </button>
       </div>
       `,
       props: ["data"]
    }
 }

 new Vue({
       el: container,
       data: {},
       components: { "my-component": component(), },
       methods: {
          clickMe: function(str){
            console.log(str);
          }
       }
    });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="container">
  <my-component :data=$data @click-me="clickMe"></my-component>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...