Дочерний компонен в VueJS

148
05 июля 2017, 00:19

Как использовать в родительском компоненте methods и watch дочернего?

Есть компонент A и B, и общий компонент Watch

// компонент A
import Watch from '@/components/Watch'
export default {
  components: {watch: Watch},
  name: 'a',
  data () {
    return {
      login: ''
    } 
  },
  methods: {}
}
// компонент B
import Watch from '@/components/Watch'
export default {
  components: {watch: Watch},
  name: 'b',
  data () {
    return {} 
  },
  methods: {}
}
// компонент Watch
export default {
  name: 'Watch',
  data () {
    return {} 
  },
  methods: {
  // логика которую нужно использовать в родительских компонентах 
  },
  watch: {
   // логика которую нужно использовать в родительских компонентах 
  }
}

Решил таким образом. Не знаю на сколько это правильно, но работает.

import Watch from '@/components/Watch'
    export default {
      component: {Watch},
      name: 'a',
      data () {
        return {} 
      },
      methods: {},
      watch: {
        'login': function (value) {
           // Watch компонент, watch опция, isLogin метод
           this.login = Watch.watch.isLogin(value);
         }
      }
    }
Answer 1

Наследование в VueJS аналогично наследованию обычных объектов javascript. Доступ к методам родительского компонента возможно получить чрез контекст дочернего, грубо говоря чрез this. Однако родительский компонент не может получить доступ к дочернему. В этой статье описаны варианты взаимодействия компонентов

Answer 2

Можно организовать доступ через $refs. Только в watch это не будет работать ($refs не реактивны)

READ ALSO
Moloquent без Laravel

Moloquent без Laravel

Хочу работать с MongoDB через Moloquent без LaravelУстановил через composer require moloquent/moloquent, создал index

241
php msql запрос к 3-ем таблицам

php msql запрос к 3-ем таблицам

Оновлено: мне не нужно вытаскивать из одной таблицы по параметрам другой, мне просто нужно из трех таблиц вытаскивать данные по правилам...

167
Laravel relation One to One through One (or pivot)

Laravel relation One to One through One (or pivot)

В ларе eloquent куча разных крутых приблуд для использования связейНо я очень давно мучаюсь с более сложными (а вроде и простыми) связями, используя...

332