vue-route передает разные реквизиты другому компоненту представления при изменении маршрутизатора в vuejs2.0?

В этом билете мы можем передать параметры компоненту при изменении маршрута через

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

Мой вопрос: если нам нужно передать разные реквизиты другому маршрутизируемому компоненту, скажем, например, свойство propForB будет иметь BData , свойство propForC будет иметь CData

как этого добиться? Особенно в vuejs2.0?


person kidsit    schedule 06.09.2016    source источник


Ответы (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
      }
    }
  }
}

Конечно, есть и другие способы добиться того же результата...

person Primoz Rome    schedule 14.09.2016
comment
это решение работает до некоторой степени, но не совсем соответствует тому, что я хочу. Это добавляет обертку к свойству, я должен изменить объект определения каждого компонента, чтобы получить реквизиты через propAData.something и propAData.somethingElse. Мне нравится не вносить изменений в тонны устаревших компонентов. Только что я решил обойти это, чтобы предоставить все данные реквизита в определении маршрутизатора, это выглядит некрасиво, но это работает. - person kidsit; 16.09.2016