当路由器在 vuejs2.0 中更改时,vue-route 将不同的道具传递给不同的视图组件?

Posted

技术标签:

【中文标题】当路由器在 vuejs2.0 中更改时,vue-route 将不同的道具传递给不同的视图组件?【英文标题】:vue-route pass different props to different view component when router changed in vuejs2.0? 【发布时间】:2017-01-13 15:51:44 【问题描述】:

在this ticket中,当路由发生变化时,我们可以给组件传递参数

<router-view class="view" :propForA="AData"></router-view>

我的问题是如果我们需要将不同的道具传递给不同的路由组件, 例如,propForB 属性将具有 BDatapropForC 属性将具有 CData

如何做到这一点?尤其是vuejs2.0?

【问题讨论】:

【参考方案1】:

我会发送一个适合您的组件的具有不同值的道具...例如:

<router-view class="view" :propData="propToSend"></router-view>

然后是这样的

export default 

  data: function () 
    return 
      propAData: 
        something: 'value',
        somethingElese: ['other', 'value']
      ,
      propBData: 
        somethingOther: 123
      ,
      propToSend: null
    
  ,

  watch: 
    '$route': function (val, oldVal) 
      if (this.$route.name === 'Something') 
        this.propToSend = this.propAData
       else 
        this.propToSend = this.propBData
      
    
  

当然还有其他方法可以达到同样的效果...

【讨论】:

这个解决方案在某种程度上有效,但并不完全符合我的要求。这为属性添加了一个包装器,我必须更改每个组件的定义对象以通过 propAData.something 和 propAData.somethingElse 检索道具。我喜欢它不会对大量遗留组件进行任何更改。刚才,我解决了它以在路由器视图定义中提供所有道具数据,这看起来很难看,但它有效。

以上是关于当路由器在 vuejs2.0 中更改时,vue-route 将不同的道具传递给不同的视图组件?的主要内容,如果未能解决你的问题,请参考以下文章

vuejs2.0使用Sortable.js实现的拖拽功能( 转)

使用vuejs2.0和element-ui 搭建的一个后台管理界面

vuejs小项目——vuejs2.0版本单页面搭建

当用户在浏览器选项卡中手动更改 url 时,防止在 React 中路由

如何更改路由器在Vue中状态更改时呈现的组件?

用VUE做网站后台