javascript - 多个components如何共用一个ajax返回的数据
某草草
某草草 2017-05-19 10:16:17
[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)
                    }
                })
            }
        }
    },

一个页面可能有多个这样的组件,这样的话就请求了多次的ajax,实际上数据都是一样的,有没有一种方法实现只请求一次异步数据,然后多个这样的组件用同一份数据?尝试了在外部定义ajax,然后赋值给cityData,这样不能直接更新数据

某草草
某草草

全部回复(5)
PHP中文网

test.json就是你的一个文件,你可以改成.js文件的格式,然后直接改成变量,obj={};不就获取了?也可以用 模块化的。

ringa_lee

看你的city组件,city.data().cityData就是你要的结果集

曾经蜡笔没有小新
  1. 使用 Vuex 管理

  2. 在共同的父组件上维护这个值,通过 props 传到子组件,子组件通过 $emit 告知父组件 ajax

某草草

最后使用了异步组件的方式

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

多个组件共享数据可以用vuex 或者自己定义一个全局的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号