首页 > 其他分享 >Vue+el-select v-model绑定为对象时回显失效的问题探究

Vue+el-select v-model绑定为对象时回显失效的问题探究

时间:2022-10-24 17:23:40浏览次数:36  
标签:el Vue mediaId 回显 val 对象 media 绑定 失效

源代码如下:

<template>
    <el-select v-model="media" value-key="mediaId" placeholder="请选择" @change="mediaChange">
        <el-option v-for="item in medias" :key="item.mediaId" :label="item.mediaName" :value="item">
        </el-option>
    </el-select>
</template>

<script>
export default {
    data() {
        return {
            media: {}
        }
    },
    props: {
        mediaId: Number
    },
    computed: {
        medias() {
            return this.$store.getters.medias
        },
    },
    watch: {
        mediaId(val) {
            if (val != null) {
                // 下面这一行注释的代码是失效的
                // this.media.mediaId = val
                // 下面这一行注释的代码是正确的
                this.media = { mediaId: val }
                console.log('后', this)
            }
        },
    },
    methods: {
        mediaChange(value) {
            this.$emit('selectMedia', value)
        }
    },
    mounted() {
        this.$store.dispatch('creativity/updateMedias')
    },
}
</script>

<style>

</style>
this.media.mediaId = val 为什么会失效?
mediaId是父组件传进来的属性值,这边我使用watch来监听mediaId的变化,然后修改data的media.mediaId。由于修改只是media这个对象属性,而不是这个对象的引用,所以不会触发view更新。
this.media = { mediaId: val } 为什么可以?
因为修改是这个绑定对象的引用,所以可以能触发view更新

标签:el,Vue,mediaId,回显,val,对象,media,绑定,失效
From: https://www.cnblogs.com/jqws/p/16822143.html

相关文章

  • 记录--分享8个非常实用的Vue自定义指令
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在Vue,除了核心功能默认内置的指令(v-model和v-show),Vue也允许注册自定义指令。它的作用价值在于当......
  • vue框架基础学习
    Vue的快速使用、插值语法、指令系统之文本指令、指令系统之事件指令、指令系统之属性指令......
  • springcloud学习记录day06--在Java中使用elasticsearch
    RestClient查询文档发起查询请求以matchall为例代码解读:第一步,创建SearchRequest对象,指定索引库名第二步,利用request.source()构建DSL,DSL中可以包含查询、分页......
  • element UI 选择时间点(可选择某一个或者多个时间点)
    html代码如下:<el-date-pickerref="datesRef"type="dates"v-model="searchObj.dateArr":editable="false"format="yyyy-MM-dd"value-format="yyyy-MM-dd"placehold......
  • 解决selenium+python 打开浏览器报错 DeprecationWarning executable_path has been d
    报错如下:解决方案:直接上代码如下:#-*-coding:utf-8-*-"""@Time:2022/10/2416:03@Auth:软件测试君@File:wait_demo.py@IDE:PyCharm@Motto:ABC(AlwaysBeCod......
  • 【kernel】内存模型
    Linux对进程地址空间有个标准布局,地址空间中由各个不同的内存段组成(MemorySegment),主要的内存段如下:程序段(TextSegment):可执行文件代码的内存映射数据段(DataS......
  • shell脚本之数组
    一、数组的概念数组中可以存放多个值。BashShell只支持一维数组(不支持多维数组)。与大部分编程语言类似,数组元素的下标由0开始。Shell数组用括号来表示,元素用"空格......
  • 关于 Vue 中 h() 函数的一些东西
    最近在项目上需要一个信息弹窗,来显示信息。一开始只让它弹出了文字,而且只有一条信息。而给我的需求是多条文字和图片,而后我使用了elementui中的Notification通知组件来......
  • 2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017)
    AAlienSunset模拟#include<bits/stdc++.h>usingnamespacestd;#define#define#define#define#define#define#define#define#define#define#define#define#define#define......
  • 行为驱动开发Behaviour Driven Development
    BDD(​​BehaviourDrivenDevelopement​​​)最重要的基础概念是业务化的“Story”,缘于一个很显而易见的原因——“软件开发是要服务于业务需要的”,但实际项目中往往因为各......