在本地存储中存储对象中的复选框值并再次检索

时间:2018-10-25 01:37:06

标签: javascript object foreach local-storage lodash

因此,我有一个带有复选框的项目列表,我根据复选框的值隐藏并显示它们。例如,一开始,所有项目都被选中,这意味着它们的可见性设置为true。如果我取消选中,它会设置为false并被隐藏。该列表处于模态,充当“过滤此列表”功能。

但是,我要尝试将值设置为localstorage,然后在用户刷新时保留他们已应用的过滤器。

不幸的是,我无法在这里发送有效的提琴,但是我可以应用一些部分代码。 我会尽力解释一下;

volumeFilter(symbol, visible) {
            const self = this;
            this.marketFiltersStorage[symbol] = this.marketFiltersStorage[symbol] || {};
            lodash.forEach(self.volumeData, (obj, objKey) => {
                if (symbol === obj.name && self.volumeData[objKey].visible === true) {
                    self.volumeData[objKey].visible = false;
                    this.marketFiltersStorage[symbol].visible = self.volumeData[objKey].visible;
                } else if (symbol === obj.name && visible === false && self.volumeData[objKey].visible === false) {
                    self.volumeData[objKey].visible = true;
                    this.marketFiltersStorage[symbol].visible = self.volumeData[objKey].visible;
                }
                localStorage.setItem('marketFiltersStorage', JSON.stringify(this.marketFiltersStorage));
            });
        },

所以VolumeFilter是我选中/取消选中复选框时触发的东西。 marketFilterStorage是我创建的用于将值保存在本地存储中的对象。 volumeData是包含所有项目的对象。

if (symbol === obj.name && self.volumeData[objKey].visible === true)的逻辑是我将商品的可见性设置为true或false

我想做的是遍历每个项目,并针对每个条件,在本地存储中添加true / false,如下所示; this.marketFiltersStorage[symbol].visible = self.volumeData[objKey].visible;

这是可行的,但是当我刷新时,本地存储仍然存在,但是当我尝试选中或取消选中另一个复选框时,它将再次重写。

长话短说,我只想将visible值添加到本地存储中,然后在页面重新加载时再次将其拉入。我还没有实施getItem

如果您有很多问题,我感到很抱歉。如果您有任何疑问,我将非常乐于尝试并更清楚地解释它。

非常感谢您预先提供的帮助

0 个答案:

没有答案