javascript - 多個components如何共用一個ajax回傳的數據
某草草
某草草 2017-05-19 10:16:17
0
5
595

取得城市元件

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)
洪涛

test.json就是你的一個文件,你可以改成.js文件的格式,然後直接改成變量,obj={};不就獲取了?也可以用 模組化的。

左手右手慢动作

看你的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 或自己定義一個全域的

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板