Файлы Javascript часто кэшируются браузером намного дольше, чем вы могли ожидать.
Это может часто приводить к неожиданному поведению при выпуске новой версии вашего JS-файла.
Таким образом, общепринятой практикой является добавить параметр QueryString в URL-адрес файла javascript. Таким образом, браузер кэширует файл Javascript с помощью v = 1. Когда вы выпускаете новую версию своего javascript-файла, вы меняете URL-адрес на v = 2, и браузер будет вынужден загрузить новую копию.
Альтернативным подходом было бы использование Vuex для управления состоянием.
const store = new Vuex.Store({
state: {
notifications: []
},
mutations: {
load (state, notifications) {
state.notifications = notifications
}
},
actions: {
load (context) {
Vue.$http.get('/notifications').then(response = {
context.commit('load', response.data);
})
}
}
});
// Notifications.vue
new Vue({
mounted () {
// you will want to add more than just an interval. You will want to keep track of this and perhaps stop it if, for example, the user logs out.
setInterval(function () {
store.dispatch('load');
}.bind(this), 1000)
}
});
// Add to your router
metaInfo: function () {
return {
title: '(' + store.state.notifications + ')' + 'Leads - ' + this.view
}
}
Это был быстрый пример того, как использование Vuex решит эту проблему. Это не проверено и предназначено только для образовательных целей. Узнайте больше на https://vuex.vuejs.org/guide/
Я предполагаю, что у вас есть объект данных в вашем компоненте уведомлений.
Упрощенная версия Notification.vue
new Vue({
data: {
notifications: []
},
watch: {
notifications (current, previous) {
document.title = '(' + current.length + ')' + document.title.replace(/ *\([^)]*\) */g, "");
}
}
})
То, что мы здесь делаем, - это отслеживание изменений в объекте уведомлений. Если это изменится, мы добавляем номер уведомления к названию документа.
document.title.replace(/ *\([^)]*\) */g, "")
эта часть удаляет текущий счетчик уведомлений перед обновлением с новым счетчиком.
Ограничения для этого подхода:
Если в скобках есть другие слова (слова), они будут удалены.
Если счетчик уведомлений равен нулю, он будет отображать (0) заголовок, если счет равен 1234, он будет отображать (1234) заголовок. Возможно, вы захотите поставить еще несколько проверок, чтобы не показывать НОЛЬ, и, возможно, сделать 9+, если длина> 9