Я согласен @ Ohgodwhy решение работает, но ИМХО по уважительной причине это было сложно: потому что вы не должны делать это так.Не рекомендуется загрязнять ваш проект css с незаданной областью, начинать добавлять правила стилевого оформления из js-файлов или отказываться от системы реактивности VUE!
Вместо этого, в компоненте верхнего уровня (вероятно, называется «app»)как и все мы) добавьте следующий класс:
<div
id="app"
:class="isReportPage ? 'super-duper-class-name' : 'another-super-duper-class-name'">
....
</div>
Где isReportPage
- это вычисляемое свойство внутри скрипта компонентов верхнего уровня, который проверяет текущее имя маршрута:
computed: {
isReportPage() {
return this.$route.name === 'Report';
},
},
и правила стилевых правил находятся внутри вашего компонента ( scoped ;)) css:
.super-duper-class-name {
overflow: hidden;
}
.another-super-duper-class-name {
overflow: auto ;
}
Теперь вот магия VUE: каждый раз, когда вы будете менять маршрут, начиная с isReportPage
является вычисляемым свойством, которое будет пересчитано и оценено, если имя текущего маршрута будет равно Report
.Если true
, то он добавит атрибут класса super-duper-class-name
, в противном случае another-super-duper-class-name
.Таким образом, достигая желаемого поведения, лучше разделите проблемы и используйте систему реактивности VUE.