Пример кода:
<!DOCTYPE html>
<html>
<head></head>
<body>
<div id="app">
<button v-test>click me</button>
</div>
<script src="https://unpkg.com/vue@3.0.5/dist/vue.global.js"></script>
<script>
(function () {
'use strict';
const App = {};
const TestDirective = {
data() {
return {
someData: [123, 456]
}
},
methods: {
helloMethod() {
console.log('hello from method!');
}
},
mounted() {
// ↓↓↓ Вот тут появляется ошибка "Uncaught TypeError: Cannot read property 'helloMethod' of undefined"
this.helloMethod()
// ↑↑↑
console.log(this.someData);
}
};
const app = Vue.createApp(App);
app.directive('test', TestDirective);
app.mount('#app');
})();
</script>
</body>
</html>
При запуске этого кода в консоли выводится ошибка:
Uncaught TypeError: Cannot read property 'helloMethod' of undefined
Причина вроде бы понята - переменная
this неопределена.
Но тогда как получить доступ к функции
helloMethod и локальной переменной
someData?