账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用VUE.set更新数据,页面依然没有实时响应
    37
    0

    问题描述

    使用VUE.set更新数据,页面依然没有实时响应

    问题出现的环境背景及自己尝试过哪些方法

    刚开始直接用索引赋值,页面没有响应,查到应该用VUE.set,修改以后可以确定数据更新了,但是页面依然没有实时更新

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    <FormItem v-for="(item, index) in formValidate.items" v-if="item.status" :key="index" :label="'选项 '" :prop="'items.' + index + '.value'" :rules="{required: true, message: '选项 ' + item.index +' 不能为空', trigger: 'blur'}">
        <Row>
          <Col span="2">
          <Input style="width:80%;" type="text" v-model="item.number" placeholder="编号"></Input>
          </Col>
          <Col span="19">
          <Input type="text" v-model="item.value" placeholder="选项内容"></Input>
          </Col>
          <Col span="2" offset="1">
          <Button @click="handleRemove(index)">删除</Button>
          </Col>
        </Row>
      </FormItem>
      <FormItem>
        <Row>
          <Col span="3">
          <Button type="dashed" long @click="handleAdd" icon="md-add">增加选项</Button>
          </Col>
        </Row>
      </FormItem>
    
    import Vue from 'vue'
    export default {
      data() {
        return {
          formValidate: {
            items: [{
              value: '',
              number: "",
              index: 1,
              status: 1
            }],
            options: {
              // value: '',
              number: '',
              status: 1
            },
          },
        }
      },
    
        handleRemove(index) {
          Vue.set(this.formValidate.items[index], 'status', 0);
        },
        handleAdd() {
          var itemLen=this.formValidate.items.length;
          this.$set(this.formValidate.items, itemLen, {
            value: '',
            index: itemLen,
            status: 1
          });
        },

    你期待的结果是什么?实际看到的错误信息又是什么?

    查到的信息都说用VUE.set就可以解决,可以不行啊,哪位大神可以指点一下?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 島嶼是海的傷疤 普通会员 1楼

      在 Vue.js 中,当我们使用 set 方法更新数据时,页面并不会立即重新渲染。这是因为 Vue.js 是一个基于 DOM 的框架,而不是一个基于消息传递的前端框架。因此,更新数据并不意味着数据将在页面上立即生效。

      set 方法的作用是在响应式数据绑定中改变 DOM 中的数据。但是,当我们使用 set 方法更新数据时,Vue.js 会暂停当前的渲染进程,等待数据的变化生效。然后,Vue.js 会重新启动渲染进程,将新的数据和响应式样式应用到页面上。

      如果你希望页面立即响应数据的变化,你需要使用 Vuex(Vue.js 的状态管理库)或者 jQuery 的 $.ajax$.get 方法来发送异步请求获取数据,并在数据发生变化时更新页面。这样,页面就会立即渲染,并且响应数据的变化。

      另外,如果你需要更新的数据是异步获取的,你还需要使用 Vuex 的异步数据更新功能。这样,你可以在 set 方法中使用异步请求,当数据发生变化时,Vue.js 会立即暂停当前的渲染进程,等待数据的变化生效。然后,Vue.js 会重新启动渲染进程,将新的数据和异步样式应用到页面上。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部