При чтении в методе data () свойство VueJS не определено - PullRequest
0 голосов
/ 29 апреля 2018

У меня проблемы с пониманием работы реквизита в VueJS, некоторая помощь будет принята с благодарностью. Это простой компонент карты Google, который я хочу показать на странице и динамически передать элемент id элемента div в качестве реквизита в базовый шаблон.

HTML-файл -

<div id="app">
    <google-map name="map"></google-map>
</div>

файл VUE -

<template>
    <div :id="mapName"></div>
</template>

<script>
module.exports = {
    name: 'google-map',
    props: [ 'name' ],
    data: () => {
        console.log(this.name); // ERROR: name is undefined
        return {
            mapName: this.name
        };
    },
    mounted: () => {
        const map = new google.maps.Map(document.getElementById(this.mapName), {
            zoom: 14,
            center: new google.maps.LatLng(39.305, -76.617)
        });
    }
}
</script>

<style scoped>
#map {
  width: 800px;
  height: 600px;
  margin: 0 auto;
  background: gray;
}
</style>

Ошибка, которую я получаю, заключается в том, что this.name не определено внутри метода data () объекта компонента.

1 Ответ

0 голосов
/ 29 апреля 2018

причина, по которой console.log(this.name); возвращает значение undefined, заключается в том, что вы используете функцию Arrow. Должно быть

data: function() {
    // ...
},

mounted: function() {
    // ...
}

или

data() {
    // ...
},

mounted() {
    // ...
}

Пояснение:

См. https://vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...