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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<code class="javascript">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)

                    }

                })

            }

        }

    },</code>

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

某草草某草草2869 Il y a quelques jours681

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

    1

    2

    3

    4

    5

    6

    7

    <code>Vue.component(ele,function (resolve, reject) {

                    getCity().then(function (data) {

                        resolve(comInherit.extend(obj[ele]));

                    }).catch(function (error) {

                        alert(error)

                    })

                });</code>

    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