Привязка к стилю Vue (фоновое изображение) не реагирует

#vue.js #nuxt.js #computed-properties #computed-style

#vue.js #nuxt.js #вычисляемые свойства #вычисляемый стиль

Вопрос:

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

 <div :style="{'background-image' : mainBackground}">
     test div
</div>
 

Я создал вычисляемую для возврата используемой в данный момент ссылки на основе языка.

 mainBackground(){
    return this.isTurkishSite ? 'url(/images/home/home_bg_main_tr.jpg);' : 'url(/images/home/home_bg_main.jpg);'
}
 

Но после изменения языка сайта с помощью выпадающего списка все остальные элементы src обновляются для использования выбранного языкового файла изображения. Но только этот фоновый путь не обновляется. Также атрибут стиля удаляется в самом элементе. Я не могу понять, почему это решение не работало должным образом. Также отображается mainBackground вычисленным в элементе div. И возвращаемая ссылка обновляется в зависимости от языка.

Я решил проблему, используя привязку к классу. 1 класс для турецкого языка и основной класс для всех других языков. И использовал их в привязке условного класса. Решение:

 :class="[isTurkishSite ? 'bg-turkish' : '']"
 

Ответ №1:

Это не работает из-за точек с запятой, которые вы ставите в конце директив url (), правила css, установленные в объектной нотации с помощью Vue, не требуют точек с запятой 🙂

Комментарии:

1. Я протестировал и работал. Спасибо. Но при первой загрузке он работает с конечной точкой с запятой. Вот почему я не могу понять, что не так) В любом случае, как вы упомянули, без точек с запятой это работает как при первой загрузке, так и при последующих изменениях.