recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment plusieurs composants partagent les données renvoyées par Ajax

Obtenez des composants de la ville

city: {
        template: '#city_template',
        data: function () {
            return {
                cityData: cityData,//城市数据
                selectedOptions:[24,81],//被选中的城市
                list:[],
            }
        },
        mounted: function () {
                this.getCity()
        },
        methods: {
            getCity: function () {
                var self = this
                $.ajax({
                    url:'test.json',
                    success:function (res) {
                        self.$set(self.$data, 'cityData', res)
                    }
                })
            }
        }
    },

Une page peut avoir plusieurs de ces composants. Dans ce cas, plusieurs requêtes ajax seront effectuées. En fait, les données sont les mêmes. Existe-t-il un moyen de demander des données asynchrones une seule fois, puis d'utiliser la même copie pour plusieurs de ces composants. ? données? J'ai essayé de définir ajax en externe et de l'attribuer à cityData, afin que les données ne puissent pas être mises à jour directement

某草草某草草2751 Il y a quelques jours602

répondre à tous(5)je répondrai

  • PHP中文网

    PHP中文网2017-05-19 10:18:17

    test.json est un de vos fichiers. Vous pouvez le changer au format d'un fichier .js, puis le changer directement en variable Obj={} ; Des modèles modulaires sont également disponibles.

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-19 10:18:17

    Regardez votre composant city, city.data().cityData est l'ensemble de résultats que vous souhaitez

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:18:17

    1. Gérer avec Vuex

    2. Maintenez cette valeur sur le composant parent commun, transmettez-la au composant enfant via les accessoires, et le composant enfant notifie le composant parent d'ajax via $emit

    répondre
    0
  • 某草草

    某草草2017-05-19 10:18:17

    Enfin, nous avons utilisé des composants asynchrones

    Vue.component(ele,function (resolve, reject) {
                    getCity().then(function (data) {
                        resolve(comInherit.extend(obj[ele]));
                    }).catch(function (error) {
                        alert(error)
                    })
                });

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:18:17

    Pour partager des données entre plusieurs composants, vous pouvez utiliser vuex ou en définir vous-même un global

    répondre
    0
  • Annulerrépondre