Свойство или метод не определены в файле.vue
Все в моем приложении работало отлично, пока я не начал добавлять свой JavaScript. Теперь я постоянно получаю ошибки в консоли.
Я получаю эту ошибку:
Свойство или метод "show" не определен в экземпляре, но на него ссылаются во время рендеринга. Убедитесь, что это свойство является реактивным либо в параметре данных, либо для компонентов на основе классов, путем инициализации свойства.
Как и эта ошибка:
TypeError: _vm.show is not a function at click App.vue?d98c:25 at HTMLButtonElement.invoker vue.esm.js?efeb:1906
Желаемый результат: нажмите на кнопку "loginBtn" и нажмите "click".
Мой код:
// app.vue script
export default {
name: 'app'
}
var show = new Vue({
el: '#loginBtn',
data: {
n: 0
},
methods: {
show: function(event) {
targetId = event.currentTarget.id;
alert('click')
}
}
})
<!-- the button -->
<template>
<div>
<button v-on:click="show($event)" id="loginBtn">Login</button>
</div>
</template>
1 ответ
Вы используете однофайловый компонент (.vue
file), который является форматом файла для определения компонента Vue, используемого vue-loader
,
Раздел сценария.vue
файл (что внутри<script>
tag) должен экспортировать объект, определяющий определение экземпляра Vue.
Сценарий должен экспортировать объект параметров компонента Vue.js. Экспорт расширенного конструктора, созданного с помощью Vue.extend(), также поддерживается, но предпочтительным является простой объект.
Вы в настоящее время только экспортируете{ name: 'app' }
вот почему Vue не может найтиshow
метод.
Ваш<script>
раздел должен выглядеть так:
<script>
export default {
name: 'app',
data() {
return { n: 0 }
},
methods: {
show: function(event) {
targetId = event.currentTarget.id;
alert('click')
}
}
}
</script>
Обратите внимание также, чтоdata
Свойство экспортируемого объекта должно быть функцией, возвращающей свойства данных. Смотрите "Почему data
должен быть функциональным разделом страницы общего новичка Gotchas.