【发布时间】:2019-07-14 02:48:08
【问题描述】:
我正在尝试将组件的数据设置为计算属性值,因为这会获取一些 localStorage 数据并对其进行轻微操作。
一旦组件被挂载,我就会监听 localStorage 中的变化,如果我的密钥被更新,然后再次获取这个值,通过我的计算属性运行它并将它传递回视图。
但是我收到以下错误:
ReferenceError: ids is not defined
at a.render (vue.js:4)
at a.e._render (vue:6)
at a.r (vue:6)
at un.get (vue:6)
at new un (vue:6)
at vue:6
at a.bn.$mount (vue:6)
at a.bn.$mount (vue:6)
at init (vue:6)
at vue:6
这是我的组件:
Vue.component('favourites-button', {
render() {
return this.$scopedSlots.default({
count: this.ids.length
});
},
data: function() {
return {
ids: this.getFavourites()
}
},
mounted() {
const self = this;
Event.listen('favourites-updated', function (event) {
console.log('updated external');
});
window.addEventListener('storage', function (e) {
if (e.key === 'favourites') {
console.log('updated');
self.ids = self.getFavourites();
}
});
},
methods: {
getFavourites: function() {
let favourites = localStorage.getItem('favourites');
return favourites.split(',').filter(id => !!id);
}
}
});
编辑:
更新了我的代码,但是当storage change 事件被触发时得到了同样的错误。
编辑 2:
原来我的模板在我的范围内期待toggle,但我从$scopedSlots 中删除了它。
【问题讨论】:
-
您在回调中使用了
this,但它没有正确的上下文。 -
废话,完全忘记了!
-
更新了我的代码,仍然有同样的问题,更新帖子
-
即使进行了更改,您也遇到了完全相同的错误?
-
@SamuelVaillant 查看更新后的帖子
标签: javascript vue.js local-storage computed-properties