【问题标题】:Vue. Autosave input value with localstorageVue。使用本地存储自动保存输入值
【发布时间】:2019-09-08 03:48:09
【问题描述】:

我有一个带有表单的组件,我需要在输入内容时为其实现数据自动保存。如何将 v-model = "titleName" 的示例应用到 v-model = "article.title[currentLanguage]"?

附: currentLanguage 取自商店

<div id="app">
  Title is <input type="text" name="titleName" id="titleName" v-model="titleName">
   Title is <input type="text" name="article" id="article" 
v-model="article.title.en">
</div>

<script>
var app = new Vue({
  el:'#app',
  data: {
    titleName: '',
      article: {
        title: {
           en: null,
           ru: null
        }
     }
  },  
  computed: {
    availableLanguages() {
      return this.$store.state.languages;
    }
  },
  created() {
    this.setDefaults();
  },  
  mounted () {
   const SAVED = localStorage.getItem('content')
    if (SAVED) {
      this.titleName = SAVED
    }
  },  
  watch: {
    titleName(newTitleName) {
      localStorage.content = newTitleName;
    }
  }
</script>

https://codepen.io/pershay/pen/EJQGGO

【问题讨论】:

    标签: vue.js local-storage vuex


    【解决方案1】:

    只需使用localStorage.setItem('titleName', newTitleName) 和localStorage.getItem('titleName')

    你不需要在mounted上加载。将它放在数据函数本身中。我认为这是更好的方法:

    var app = new Vue({
      data:() => ({
        titleName: localStorage.getItem('titleName'),
        article: JSON.parse(localStorage.getItem('article'))
      }),
      watch: {
        titleName(newTitleName) {
          localStorage.setItem('titleName', newTitleName)
        },
        article(newArticle) {
            handler: function(newArticle) {
                localStorage.setItem('article', JSON.stringify(newArticle))
            },
            deep: true
        },
      }
    

    上面的示例还包括一个深度对象监视。

    【讨论】:

    • 谢谢!但是当 v-model 看起来像“foo.bar”时如何应用它?
    • 您需要创建一个计算属性,例如foo_bar(){return this.foo.bar}。然后你看那个属性。您还可以在存储到 localStorage 之前“深入观察”对象并序列化对象。从 localStorage 获取时显然会反序列化。
    猜你喜欢
    • 2015-02-01
    • 1970-01-01
    • 2016-08-22
    • 2021-09-29
    • 2016-04-09
    • 1970-01-01
    • 2021-11-13
    • 2016-03-15
    • 2019-09-13
    相关资源
    最近更新 更多