Кроме того, в XSLT 2.0 вы можете использовать операторы «gt» (больше, чем), «lt» (меньше) и «eq» (равно). Использование этих вместо сущностей делает ваш код немного более чистым.
Ваш obj
внутри крючка mounted
локально ограничен. Если вы не объявите его внутри функции data
вашего компонента или как вычисляемое свойство, наблюдатель не увидит его, потому что он не реагирует.
Попробуйте:
data () {
return {
obj: null
}
},
mounted () {
this.$set(this, 'obj', {name: 'hello', age:'10', gender: 'not to say'});
Cookies.set("name", JSON.stringify(this.obj), {expires: '1m'});
Cookies.get("name");
}
Позже отредактируйте: Исходя из вашего комментария ниже и обновленного фрагмента кода, я все еще подозреваю, что ваша проблема вызвана неправильным обновлением вашего локального государство.
Поскольку ваш объект инициализируется как пустой литерал, когда вы обновляете его с помощью this.obj = objectPassed;
в savedDetails
, вы по существу создаете новые свойства объекта. Этот тип обновления не будет реактивным, и, следовательно, ваш наблюдатель не будет ничего делать. Правильный способ обеспечения реактивности:
this.$set(this, 'obj', objectPassed);
Подробнее о предупреждениях о реактивности читайте в официальной документации по теме « Глубина реактивности »
Просто обновите файл cookie вместе с методом saveDetails следующим образом
<template>
<details @detailsCompleted="savedDetails"></details>
</template>
data() {
return {
obj:{}
}
},
methods: {
savedDetails: function(objectPassed) {
this.obj = objectPassed;
Cookies.set("name", JSON.stringify(objectPassed), {expires: '1m'});
Cookies.get("name");
}
},
mounted: function() {
this.obj = {};
Cookies.set("name", JSON.stringify(this.obj), {expires: '1m'});
Cookies.get("name");
}
РЕДАКТИРОВАТЬ:
https://jsfiddle.net/k85o7bdq/
Вот рабочая скрипка.
Возможно, вы пытаетесь определить, был ли файл cookie обновлен, просматривая вкладку «Приложение» в инструментах разработчика? Там есть небольшая кнопка обновления, попробуйте нажать ее после обновления куки.