Как я могу использовать глобальные переменные в компоненте VueJS

#javascript #vue.js #variables #components

#javascript #vue.js #переменные #Компоненты

Вопрос:

Как я могу получить доступ к глобальным переменным внутри компонента VueJS?

Я пытаюсь получить доступ к url переменной в функции выборки внутри methods , но это не сработает.

 var produits = [];
var url = '/dataset.json';

const vm = new Vue({
    el: "#app",
    data: {
        produits: []
    },
    methods: {
        handleKeyUp(event) {
            console.log(event.key);
            this.displayProducts()
        },
        displayProducts(produits) {
            const htmlString = produits
                .slice(0, 3)
                .map((produit) => {

                    var replace = searchBar.value;
                    var re = new RegExp(replace, "gi");

                    return `
                    <li class="produitWrapper">
                    <div class="imgProduit">
                        <img src="https://d1tydw6090df56.cloudfront.net/products/320x240/${produit.imageKeyHashes}.jpg" alt="">
                    </div>

                    <div class="infosProduit">
                        <h2>${produit.title} - </h2>
                        <h3>${produit.mpn.replace(re, `<span class="highlight">$amp;</span>`)}</h3>
                        <br>
                        <p>${produit.description}</p>
                    </div>
                </li>
            `;
                })
                .join("");

            productsList.innerHTML = htmlString;
        },
        fetch(url).then(res => res.json())
            .then((output) => {
                produits = output
            })
            .catch(err => { throw err });
    }
})

  

Комментарии:

1. о, подождите, эта выборка находится не в том месте, я удивлен, что вы не получаете всевозможные ошибки в этом коде (особенно синтаксические ошибки) — проверьте консоль инструментов разработчика вашего браузера на наличие ошибок

Ответ №1:

В коде, который вы вставили первым делом, происходит несколько ошибок:

функция выборки — это своего рода вызов другой функции, которую, похоже, вы хотели импортировать в первую очередь? в любом случае этот вызов должен быть в первую очередь внутри его собственной оболочки функции, например:

     import fetch from '@/api/fetch'

let produits = [];
const url = '/dataset.json';

const vm = new Vue({
    el: "#app",
    data: {
        produits: []
    },
    methods: {
        handleKeyUp(event) {
            console.log(event.key);
            this.displayProducts()
        },
        displayProducts(products) {
            const htmlString = products
                .slice(0, 3)
                .map((produit) => {

                    var replace = searchBar.value;
                    var re = new RegExp(replace, "gi");

                    return `
                    <li class="produitWrapper">
                    <div class="imgProduit">
                        <img src="https://d1tydw6090df56.cloudfront.net/products/320x240/${produit.imageKeyHashes}.jpg" alt="">
                    </div>

                    <div class="infosProduit">
                        <h2>${produit.title} - </h2>
                        <h3>${produit.mpn.replace(re, `<span class="highlight">$amp;</span>`)}</h3>
                        <br>
                        <p>${produit.description}</p>
                    </div>
                </li>
            `;
                })
                .join("");

            productsList.innerHTML = htmlString;
        },
        fetch(url) {
            fetch(url).then(res => res.json())
            .then((output) => {
                produits = output
            })
            .catch(err => { throw err });
        }
    }
})
  

Во-вторых, я не вижу, где вы хотите вызвать выборку, судя по тому, как вы пытаетесь обработать ошибку, похоже, вы хотите, чтобы выборка информации выполнялась в функции displayProducts, когда вы щелкаете где-нибудь в своем шаблоне, тогда URL-адрес должен быть параметром, переданным там, я уверен, что это не то, что вам нужноищу, но вам нужно будет предоставить фрагмент вашей проблемы для работы, но я уверен, что указываю вам правильное направление.