vue/vue-router模型中,在父组件通过ajax获取数据后,如何传输给不同路由分支中的组件?

我目前情况,父组件在ready中通过Ajax得到总的外部数据,然后通过$broadcast,让当前路由里的子组件,成功收到数据。但是路由一变,数据就没有了。这种模式,如何让每个子组件都得到数据?

我也想过router.afterEach时再次$broadcast,但不知如何写代码,也不知道这样做是否合理?
用的是vue1.0.28版本,没用2.0版本。

父组件app.js

var App = Vue.extend({
    components: { nav_main,foot,modal },
    data() { 
        return {
          mydata:{}
        }
     },
     methods: {
         send_data: function() {
             
             var self = this;
             $.ajax({
                 url: './data/main.json'
             })
             .done(function(data) {
                 self.mydata = data;
                 self.$broadcast("done", self.mydata);
             })
         }
     },
    ready () {
        this.send_data;
    }
});

Vue.use(VueRouter);

var router = new VueRouter();
router.map({
    '/sc_cover': {component: sc_cover,tit:"封面页" },
    '/sc_yfh': {component: sc_yfh,tit:"云峰湖" },
    '/sc_holiday': {component: sc_holiday,tit:"住假" },
    '/sc_expe':{component: sc_expe,tit:"体验"} 
})
router.afterEach(
    function (arg) {
        document.title= arg.to.tit;
    }
);
router.start(App, '#app');
router.go({"path":"/sc_holiday"});

子组件sc_yfh.vue接收$broadcast传来的数据:

events: {
        "done": function(data) {
            this.mydata = data;
        }
    }
阅读 4.7k
2 个回答

父组件往子组件传递数据应该使用prop

补充一下楼上的

父组件往子组件传递数据应该使用prop

如果组件较多,组件通信频繁,也可以采用vuex

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进