В настоящее время у меня есть компонент, который изначально не отображается, потому что он находится на вкладке. Этот компонент получает высоту элемента, который помещается внутрь безымянного слота по умолчанию, например:
this.$el.offsetHeight
Это не удастся, потому что элемент не отображается, поэтому я реализовал шину событий, и при нажатии на вкладку я запускаю событие, чтобы компонент знал, что он может прочитать высоту.
Проблема, с которой я сталкиваюсь, заключается в том, что для отображения вкладки требуется немного времени. Когда я пытаюсь прочитать offsetHeight
сразу, это не работает.
Однако, когда я бросаю setTimeout
вокруг функции, которая считывает высоту только с задержкой 50ms
, она работает отлично.
Однако я не хочу полагаться на произвольное значение типа 50ms
. Есть ли способ для Vue сообщить мне, когда контент действительно отображается здесь?
Является ли нормальным наличие такой задержки между событием, передаваемым на шину событий, и моментом, когда событие обрабатывается в другом компоненте?
offsetHeight
в обратном вызовеnextTick
, тогда он должен работать vuejs.org/v2/api/# Vue-nextTick - person Florian Haider   schedule 29.06.2017setTimeout
равным 0, и он работает. Он также работает с nextTick. Я предполагаю, что nextTick работает так же, ставя асинхронный код в очередь? - person Stephan-v   schedule 29.06.2017