前端工作总结288-pc父组件通过props传值给子组件,如何避免子组件改变props的属性值报错问题

简介: 前端工作总结288-pc父组件通过props传值给子组件,如何避免子组件改变props的属性值报错问题
</el-form>
      <div>
        <!--子代方法有一个·传值传向父级 onselect去接收这个值-->
        <select-account :data1.sync="accountList" :checkedData.sync="checkedData1" @seletct="onSelect" />
      </div>
      <div style="clear: both"></div>
      <template v-slot:footer>
        <el-button @click="cancel">取 消</el-button>
        <el-button type="primary" @click="confirm">确 定</el-button>
      </template>
    </el-dialog>
  </div>
<el-checkbox-group   v-model="ooo"  @change="handleCheckedDataChange">
       <!--循环遍历得到每一个数据  传入data的每一个数据-->
       <el-checkbox  v-for="acc in data" :label="acc" :key="acc.id" style="margin-left: 5px;margin-top: 20px">
       <!--  <el-checkbox v-for="acc in data" :label="acc" :key="acc.id">-->
         <el-card
           shadow="hover"
           class="card-container"
          style="display: flex;justify-content: center"
         >
         <!--  <div class="avatar-img">
           <!&ndash;  <span><img :src="acc.pAvatar" alt="image" class="media-img" /></span>–>
          <!&ndash; <el-avatar :src="acc.dAvatar" alt="image"  />&ndash;>
           </div>-->
           <div style="display: flex;justify-content: left;align-items: center">
             <div style="display: flex;flex-direction: column;font-size: 12px;justify-content: center">
               <div style="display: flex;justify-content: left">
                 <div style="margin-top: 10px;margin-right: 20px;text-align: center">
                   <img v-if="acc.plugin_icon_url!=''&&acc.plugin_icon_url!=null" style="width: 24px;height: 24px" :src="acc.plugin_icon_url" alt="">
                   <i v-else style="width: 24px;height: 24px" class="el-icon-warning-outline"></i>
                   <h1 style="font-size: 12px;">
             {{ acc.name }}
           </h1>
          <p style="font-size: 12px;margin-top: 2px;">
            {{ acc.departmentName }}
          </p>
                 </div>
                 <div style="display: flex;flex-direction: column;justify-content: left;text-align: center">
                   <div style="font-size: 12px;background-color: #ccc;">{{ acc.platform }}</div>
                   <p style="font-size: 12px;">刊例价:¥{{ acc.price }}</p>
                   <p style="font-size: 12px">平均播放量:{{ acc.avg_view==null?0:acc.avg_view }} </p>
                   <p style="font-size: 12px">粉丝数:{{ acc.num_fan==null?0:acc.num_fan }}</p>
                 </div>
                 </div>
               </div>
        <!--   <div style="margin-left: 40px;">
             <input type="checkbox" name="running" :checked="checked" style="width: 20px;height: 20px">
           </div>-->
           </div>
          <!-- </div>-->
           <!--<div class="gy-right">
           <div class="account-name">
             <span>{{ acc.platform }}</span>
           </div>-->
           <!--<div class="account-info">
             <p class="p-slide">刊例价:¥{{ acc.price }}</p>
             <p class="p-slide">平均播放量:{{ acc.avg_view }} </p>
             <p class="p-slide">粉丝数:{{ acc.num_fan }}</p>
           </div>-->
         </el-card>
       </el-checkbox>
       </el-checkbox-group>
  </div>
</template>
<script>
  import {
    getAction
  } from "@/api";
  export default {
    name: "SelectAccount",
    // props: {
    //  value: {
    //    type: String | Number,
    //    required: true
    //  },
    // },
    model: {
      prop: "value",
      event: "change"
    },
   /* computed:{
      ooo:function (){
        return this.checkedData
      }
    },*/
    props: ['checkedData','data1'],
    data() {
      return {
        ooo: this.checkedData,
        selectStatus: [],
        data: this.data1,
        /*双向绑定数据 双向数据绑定*/
        checked:true
      };
    },
    mounted() {
      this.list();
    },
   /* watch(){
      console.log(this.checkedData,"11111")
    },*/
    methods: {
      /*向父组件传值*/
      // onSelect(data) {
      //  this.$emit("seletct", data);
      // },
      /*test(){
        this.checked=!this.checked
      },*/
      list() {
        getAction('/account/list').then(res => {
          /*定义一个list数组*/
          var list = [];
          /*定义一个字符串对象*/
          var data = '';
          for (var i = 0; i < res.data.length; i++) {
            /*创建数组
            {
              "id": "1",
                "name": "Hi苏州",
                "num_fan": null,
                "avg_view": null,
                "platform": "今日头条",
                "department_id": "1",
                "column": null,
                "price": "111.00",
                "department_name": "ddd1"
            },*/
            data = {
              /*任务id*/
              id: res.data[i].id,
              /*账号名称*/
              name: res.data[i].name,
              /*粉丝数*/
              num_fan: res.data[i].num_fan,
              /*平均播放量*/
              avg_view: res.data[i].avg_view,
              /*账号类型*/
              platform: res.data[i].platform,
              /*部门id*/
              department_id: res.data[i].department_id,
              column:res.data[i].column,
              /*刊价比*/
              price: res.data[i].price,
              /*部门名称*/
              departmentName: res.data[i].department_name,
              /*暂时写死的两个字段 后续可注释*/
              pAvatar: "./logo.png",
              dAvatar: "./logo.png",
              plugin_icon_url:res.data[i].plugin_icon_url,
            }
            list.push(data);
          }
          /*赋值给data*/
          this.data = list;
        })
      },
      /*父子组件传值 通过select的属性进行传值*/
      handleCheckedDataChange(val){
        console.log(this,"3333")
        /*触发父亲组件的方法 冰进行传值*/
        this.checked=!this.checked
        console.log(this.checked,"1111")
        this.$emit("seletct", val);
      }
    }

避免直接改变中转

相关文章
|
前端开发
前端跳转链接报错403的原因以及解决方案
前端跳转链接报错403的原因以及解决方案
1746 1
|
Web App开发 前端开发 JavaScript
前端语言报错
前端语言报错
126 0
|
前端开发 Java
(前后端分离)SpringBoot配置全局跨域,前端一访问就报错的原因竟然是这个
(前后端分离)SpringBoot配置全局跨域,前端一访问就报错的原因竟然是这个
325 0
|
前端开发 JavaScript
前端基础 - JavaScript修改标签样式的属性值
前端基础 - JavaScript修改标签样式的属性值
113 0
|
11月前
|
前端开发 JavaScript Docker
拿下奇怪的前端报错(五):SyntaxError: Unexpected token ‘??=‘或‘xxx‘ - 基于容器搭建开发环境或许是更好的选择
在前端开发中,同时维护多个项目时可能会遇到不同Node.js版本的问题。低版本Node.js可能导致依赖无法安装或启动失败,而高版本Node.js则可能引起第三方库的兼容性问题。推荐使用Docker搭建独立的开发环境,以避免版本不一致带来的困扰。
2634 2
|
11月前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
291 5
|
11月前
|
Web App开发 缓存 前端开发
拿下奇怪的前端报错(六):多摄手机webrtc拉取视频流会导致应用崩溃,从而无法进行人像扫描
本文介绍了一种解决手机摄像头切换导致应用崩溃的问题的方法。针对不支持facingMode配置的四摄手机,通过缓存和序号切换的方式,确保应用在特定设备上不会频繁崩溃,提升用户体验。
311 1
|
11月前
|
缓存 JavaScript 前端开发
拿下奇怪的前端报错(三):npm install卡住了一个钟- 从原理搞定安装的全链路问题
本文详细分析了 `npm install` 过程中可能出现的卡顿问题及解决方法,包括网络问题、Node.js 版本不兼容、缓存问题、权限问题、包冲突、过时的 npm 版本、系统资源不足和脚本问题等,并提供了相应的解决策略。同时,还介绍了开启全部日志、使用替代工具和使用 Docker 提供 Node 环境等其他处理方法。
7707 1
|
11月前
|
JavaScript 前端开发 Docker
拿下奇怪的前端报错(二):nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
本文介绍了在多版本Node.js环境中使用nvm进行版本管理和遇到的问题,以及通过Docker化构建流程来解决兼容性问题的方法。文中详细描述了构建Docker镜像、启动临时容器复制构建产物的具体步骤,有效解决了不同项目对Node.js版本的不同需求。
458 1
|
11月前
|
存储 前端开发 NoSQL
拿下奇怪的前端报错(四):1比特丢失导致的音视频播放时长无限增长-浅析http分片传输核心和一个坑点
在一个使用MongoDB GridFS存储文件的项目中,音频和视频文件在大部分设备上播放时长显示为无限,而单独播放则正常。经调查发现,问题源于HTTP Range请求的处理不当,导致最后一个字节未被正确返回。通过调整请求参数,使JavaScript/MongoDB的操作范围与HTTP Range一致,最终解决了这一问题。此案例强调了对HTTP协议深入理解及跨系统集成时注意细节的重要性。
244 0

热门文章

最新文章