【问题标题】:Store the elements of an object using vue.js使用 vue.js 存储对象的元素
【发布时间】:2025-11-24 08:15:02
【问题描述】:
    data() {
        return: {
          user: {},
          userName: "",
          userAge: ""
    }
  },

methods: {

    saveUserName: function() {
          this.userName = this.newUserName;
          this.$refs.userNameModal.hideModal();
          this.$session.set('userDetails', {userName: this.userName});
        },

    saveUserAge: function() {
          this.userAge = this.newUserAge;
          this.$refs.userAgeModal.hideModal();
          this.$session.set('userDetails', {userAge: this.userAge});
        },

    },

    beforeMount: function() {
    if (this.$session.exists('userDetails')) {

          this.user = this.$session.get('userDetails');
          console.log("userDetails", this.user)
        }

    }

我有一个用户表单,对于每个条目,都会弹出一个 Modal,用户是 需要填写,并通过按下完成按钮,模态关闭,调用模态的特定函数(即 saveUserName()),并将其设置为会话存储。 所以我想知道如何一次次填充用户对象,并将这些值设置到我的会话存储中? 目前,第一个值被重置,第二个值接管,在我的例子中,我的用户对象有 userName 或 userAge。 我所期望的(在我的会话存储不为空的情况下)从日志 beforeMount 是 user: {userName: "Mario", userAge:27} 谢谢

【问题讨论】:

    标签: javascript vue.js session-storage


    【解决方案1】:
    data() {
      return {
        user: {
          userName: "",
          userAge: ""
        },
      };
    },
    
    methods: {
      saveUserName: function() {
        this.user.userName = this.newUserName;
        this.$refs.userNameModal.hideModal();
        this.saveUser();
      },
    
      saveUserAge: function() {
        this.user.userAge = this.newUserAge;
        this.$refs.userAgeModal.hideModal();
        this.saveUser();
      },
    
      saveUser: function() {
        this.$session.set('userDetails', this.user);
      },
    },
    
    beforeMount: function() {
      if (this.$session.exists('userDetails')) {
        this.user = this.$session.get('userDetails');
        console.log("userDetails", this.user)
      }
    }
    

    【讨论】:

    • 抱歉,这是个意外。这里的问题是,一旦用户编辑其中一个元素,整个对象就会再次重置
    • 这真的有问题吗? o_O 如果是 - 您可以创建序列化/反序列化方法并将“用户名”和“用户名”分开存储。
    • 并且您不应该忘记会话存储只能存储字符串(而不是对象)。因此,您无法轻松修改此字符串的一部分。