Не работает директива v-on:click на компоненте

206
18 сентября 2017, 05:21

Написал свой компонент

  export default {
    name: 'TButton',
    render (h) {
      return h('button', { 'class': { btn: true } }, this.$slots.default)
    }
  }

Что я сделал не так, что директивы vue не работают

t-button.white(@click="alert()") Send // Template PUG
Answer 1

В компоненте нужно на кнопку повесить событие и пробросить событие нажатия наверх в родительский компонент: @click="$emit('click', $event)"

Answer 2

Ответ на англоязычном stackoverflow

Vue.component('sample', {
  render: function(createElement) {
    return createElement('button', {
      on: {
        click: this.$listeners.click
      }
    }, this.$slots.default)
  }
})
new Vue({
  el: '#app',
  methods: {
    foo() {
      console.log('foo called')
    }
  }
})

Использование

<script src="https://unpkg.com/vue"></script>
<div id="app">
  <sample v-on:click="foo()">bar</sample>
</div>
READ ALSO
Не удается прикрепить окно к маркеру

Не удается прикрепить окно к маркеру

ЗдравствуйтеПодключил карту с помощью гугл апи, прикрепил к нему собственный маркер

275
foreach выводит лишний элемент [дубликат]

foreach выводит лишний элемент [дубликат]

На данный вопрос уже ответили:

339
Yii2 Как в AccessControl добавить &#39;register&#39; в access?

Yii2 Как в AccessControl добавить 'register' в access?

В backend нужно сделать регистрацию только для админа и контент-менеджераСейчас при попытке пройти по ссылке: 'регистрация нового пользователя'...

752
PHP не работает проверка [требует правки]

PHP не работает проверка [требует правки]

Подскажите пожалуйста почему не работает проверкаОтправляет даже пустые значения

207