Vuejs Проблемы родительского общения с одним значением - PullRequest
0 голосов
/ 25 августа 2018

Итак, в Vuejs я создал выпадающий компонент, который называется так:

                        <Dropdown
                        :style="{width: '100%'}"
                        v-on:selectReturn='selectReturn'
                        :dropDataArray="expenseType"/>

                        <Dropdown
                        :style="{width: '100%'}"
                        v-on:selectReturn='selectReturn'
                        :dropDataArray="loanType"/>

где в данных у меня

    expenseType: [
        'expenseType',
        'one time',
        'recurring',
        'loan'
    ], 
    loanType: [
        'loanType',
        'new loan',
        'recurring payment',
        'one time payment'
    ]

В дочернем процессе мне нужно прочитать первую строку массива по разным причинам.

Итак, у меня есть ...

props: ['dropDataArray']

и ...

this.dataArrayName = this.dropDataArray[0];

ОДНАКО:

Запись в консоли

значения this.dataArrayName показывает, что он изменяет 0-й элемент первого дочернего компонента на «loanType» (я вызываю это при нажатии @click). Это очень странно, поскольку я не передаю первому дочернему элементу Dropdown массив loanType! Я думаю, что я не согласен с предостережением реактивности для vuejs, но я не вижу, как или лучший способ изменить это. Если у кого-то есть идеи, пожалуйста, дайте мне знать. Спасибо!

Вот ссылка для кодаandbox.io https://codesandbox.io/s/x38j14900q.

Вы найдете проблему, если щелкнете верхнее поле выбора и посмотрите в консоль. Вы увидите это:

value of this.dataArrayName: loanType

когда это действительно должно быть ExpenseType!

Дальнейшее тестирование показывает, что проблема хуже, чем я ожидал.

                        <Dropdown
                        :style="{width: '100%'}"
                        :stringProp="'expenseString'"
                        :dropDataArray="expenseType"/>

                        <Dropdown
                        :style="{width: '100%'}"
                        :stringProp="'loanString'"
                        :dropDataArray="expenseType"/>

с props: ['dropDataArray', 'stringProp']

снова только возвращается loanString

1 Ответ

0 голосов
/ 26 августа 2018

Кажется, это проблема с ограничениями в window.onclick.Фактическое значение dataArrayName не меняется.Ваше оконное событие, вероятно, получает значение от последнего обработанного компонента Dropdown.

Я немного изменил ваше примерное приложение: https://codesandbox.io/s/rrpq67q9ro

Я добавил интервал, который отображает dataArrayName каждые 3 секунды для регистрации.Как видите, он отображает как expenseType, так и loanType.Я также добавил метод test(e) и переместил содержимое вашего window.onclick в этот метод.test запускается при нажатии на выпадающий список.Если вы посмотрите на консоль сейчас, она отобразит правильный dataArrayName в зависимости от того, на какой экземпляр выпадающего меню вы нажали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...