Задать вопрос
toohappy
@toohappy
Люблю свекольник.

Как добраться до переменной в объекте?

Как получить данные из метода 'data()' такие как: api_key, url_base и нормально засунуть в шаблонные строки метода fetch?
Сейчас через this добраться не могу. Знаю что есть способ, но забыл как.

let app = {
    name: "app",
    proxy: "https://cors-anywhere.herokuapp.com/",
    data() {
        return {
            api_key: "123456789012345678901234567890",
            url_base: "https://api.openweathermap.org/data/2.5/",
            query: "",
            weather: {}
        };
    },
    methods: {
        fetchWeather(e) {
            console.log(1)
            if (e.key == "Enter") {
                fetch(
                    `${this.url_base}weather?q=${this.query}&units=metric&APPID=${this.api_key}`
                )
                    .then(res => {
                        return res.json();
                    })
                    .then(this.setResults);
            }
        },
    }
}
  • Вопрос задан
  • 153 просмотра
Подписаться 2 Простой 2 комментария
Решения вопроса 1
Athanor
@Athanor
Лайк + Решение: не жмись, нажми
Это очень похоже на vue. Если это он и это код вашего компонента, то все и так должно работать.
Если это не он, то просто замените this на app.data(), т.к. this в данном случае указывает на methods.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Стремная структура.
В текущем виде, если вызываешь fetchWeather из addEventListener у тебя в this сам элемент
если сделаешь fetchWeather: (e) => { то this тоже не тот что нужен
как вариант
fetchWeather(e) {
						let data = app.data()
            if (e.key == "Enter") {

https://jsfiddle.net/qt5mr9g6/
Но зачем каждый раз вытягивать данные которые статичны и не меняются?
Жопная структура, в текущем виде нет красивого решения, говнокод какойто
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы