eventBus i nienadpisywanie wartości we Vue.js

0

Z komponentu A do komponentu B poprzez eventBus wysyłam stringa, odbierany jest on w komponencie B, loguje poprawnie do konsoli, staram się go nadpisać w data() i wyświetlić na stronie, ale ta wartość pozostaje niezmieniona. Co więcej - dostaję się do komponentu B poprzez button w komponencie A (router-link) - po odświeżeniu strony pierwsze kliknięcie nie działa i nic się nie wysyła.
Komponent A:

<router-link to="/test">
          <button
              v-if="mouseEvent && (mouseEventSectionId === index)"
              class="btn btn-primary"
              @click="chose(index)">
              Przejdź do testu
         </button>
</router-link>

methods: {
      chose(index) {
        console.log('przedmiot to:' + this.sections[index]);
        const subject = this.sections[index];
        eventBus.$emit('sectionName', subject);
      },

Komponent B:

data() {
      return {
        curSection: undefined,
      }
    },
    created() {
      eventBus.$on('sectionName', (subject) => {
        console.log(` sections: ${subject}`);
        this.curSection = subject;
        console.log('curSection ' + this.curSection)

      });
    },

Dodam tylko, że jestem beginnerem, także prosze, nie wyżywajcie się na mnie. Chcę się nauczyć ;)

0

Ciężko załączyć JSFiddle, bo chyba nie można tam zasymulować komponentów i eventBus'a

0

Może wartość nie nadpisuje się, bo dodałem listenera na eventBus w created? Bo testując widzę, że nawet zwykłe nadpisywanie wartości z data() nie działa.

0

Nigdy nie słyszałem o tym "eventBus" ale wygląda mi na coś co psuje reguły Vue i w przyszłości sprawi Ci więcej problemów niż ich rozwiąże (jak prawie wszystko co jest globalne i można mieć do tego dostęp z każdego miejsca). Dlaczego nie robisz tego zwykłym emitem?

Widzę, że próbujesz na @click zmienić jakiś section name, nie jest to przypadkiem zwykły routing np. /section/:name?

Na jsfiddle możesz umieścić dowolny kod, tutaj masz hello world z Vue: https://jsfiddle.net/chrisvfritz/50wL7mdz/

0

@Nindzia: wrzuć console.log('created'); w created() i powiedz ile razy wyświetla Ci się ta informacja podczas interakcji ze stroną.

1 użytkowników online, w tym zalogowanych: 0, gości: 1