36.Local Storage2

Local Storage 只适合用于存储简单的值。为了存储对象和数组这样更复杂的数据,你必须使用 JSON 来对数据进行序列化和反序列化。

<div id="app">
  <h2>Cats</h2>
  <div v-for="(cat, n) in cats">
    <p>
      <span class="cat">{{ cat }}</span>
      <button @click="removeCat(n)">Remove</button>
    </p>
  </div>

  <p>
    <input v-model="newCat">
    <button @click="addCat">Add Cat</button>
  </p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    cats: [],
    newCat: null
  },
  mounted() {
    if (localStorage.getItem('cats')) {
      try {
        this.cats = JSON.parse(localStorage.getItem('cats'));
      } catch(e) {
        localStorage.removeItem('cats');
      }
    }
  },
  methods: {
    addCat() {
      // 确保他们输入了一些东西
      if (!this.newCat) {
        return;
      }

      this.cats.push(this.newCat);
      this.newCat = '';
      this.saveCats();
    },
    removeCat(x) {
      this.cats.splice(x, 1);
      this.saveCats();
    },
    saveCats() {
      const parsed = JSON.stringify(this.cats);
      localStorage.setItem('cats', parsed);
    }
  }
})

mounted 方法先获取数据,然后对 JSON 格式的数据进行解析;如果这里出现了任何错误,我们就认为数据已经损坏了并将它删除。addCatremoveCat 方法负责更新储存在 this.cats 中的“实时”Vue 数据。在此之后,它们通过 saveCats 方法来序列化和持久化这些数据。


<<:  强型闯入DenoLand[35] - 完赛心得

>>:  VirtualBox VM 安装 ChromeOS

Constructor

当我们今天要储存个人的信息会使用到object,但仔细思考若有100位的话,是否太麻烦了 let p...

AI ninja project [day 29] Dialogflow--聊天客服机器人

这篇介绍的为Dialogflow ES版本, 可以搜寻Dialogflow ES documenta...

谁温暖了资安部-29(完)

道南桥...我们顺着道南桥旁的河堤,往里走...景美溪的水声,让我跟Asuka的距离,又近了一些。 ...

Dungeon Mizarka 010

解决房间生成导致A★出现问题 在最先的测试用场景中,每格不是空的要不然就是障碍物或是场地外。生成的房...

OpenStack Nova 介绍 2

本系列文章同步发布於笔者网站 上一篇文章我们介绍了 Nova 的功能与其使用方法,本篇文章将会继续介...