Ошибка при попытке сделать sh массив из запроса http в vue. js - PullRequest
2 голосов
/ 18 января 2020

Я пытаюсь вывести sh объект в ответ от топора ios получить запрос, но я всегда получаю сообщение об ошибке "pu sh не функция"

i ' я пытаюсь набрать sh внутри блока .then http-запроса

ps: я следую примеру с vuejs сайта

var app = new Vue({
    el: '#app',
    data: {
        message: 'Hello Vue!',
        bitCoinValue: null
    },
    mounted() {
        this.getBitcoinValue();
    },
    filters: {
        currencydecimal(value) {
            return value.toFixed(2);
        } 
    },
    methods: {
        getBitcoinValue: function () {
            axios.get('https://api.coindesk.com/v1/bpi/currentprice.json')
                .then(response => {
                    this.bitCoinValue = response.data.bpi || [];
                    this.bitCoinValue.push({code: 'BRL', description: 'Reais', symbol: 'R$', rate_float: 25.50});
                });
        }
    }
})

это сообщение об ошибке :

Uncaught (в обещании) TypeError: this.bitCoinValue.pu sh не является функцией на сайте. js: 21

Ответы [ 2 ]

1 голос
/ 18 января 2020

проблема в том, что ваш ответ от https://api.coindesk.com/v1/bpi/currentprice.json записи bpi является Object, поэтому вы не можете использовать push, потому что это функция для Array Object.

у вас есть 2 варианта:

  1. установить ваше значение в качестве аналогичного подхода, который API отвечает

    getBitcoinValue: function () {
        axios.get('https://api.coindesk.com/v1/bpi/currentprice.json')
            .then(response => {
                this.bitCoinValue = response.data.bpi || [];
                this.bitCoinValue['BRL'] = {code: 'BRL', description: 'Reais', symbol: 'R$', rate_float: 25.50};
            });
    }
    
  2. преобразовать объект в массив, затем pu sh

    getBitcoinValue: function () {
        axios.get('https://api.coindesk.com/v1/bpi/currentprice.json')
            .then(response => {
                let objectResponse = response.data.bpi || {};
                this.bitconValue = Object.values(objectResponse).map(item => item)
                this.bitCoinValue['BRL'] = {code: 'BRL', description: 'Reais', symbol: 'R$', rate_float: 25.50};
            });
    }
    
1 голос
/ 18 января 2020

Открыв свою конечную точку API в браузере, я обнаружил, что ключ "bpi" в ответе JSON - это не массив, а объект. Таким образом, вместо .push() ввода значения вам нужно установить ключ напрямую, т.е. this.bitCoinValue.BRL = {...};.

...