最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于element-ui中@selection-change執(zhí)行兩次的問題

 更新時間:2022年08月12日 10:51:12   作者:原萊_  
這篇文章主要介紹了關(guān)于element-ui中@selection-change執(zhí)行兩次的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

element-ui中@selection-change執(zhí)行兩次

問題描述

行內(nèi)處理數(shù)據(jù)也就是:

data="roleData.filter((data) => !serarchText || data.name.includes(serarchText))"和type="selection"

共存的時候執(zhí)行出錯,@selection-change執(zhí)行了兩次

我最近再試這段代碼發(fā)現(xiàn)并沒有執(zhí)行兩次,element-plus好像修復(fù)了這個??

<template>
? <div>
? ? <div>
? ? ? <el-input clearable placeholder="搜索..." prefix-icon="el-icon-search" v-model="serarchText"></el-input>
? ? </div>
? ? <el-table border stripe
? ? ? ? ? ? ? :data="roleData.filter((data) => !serarchText || data.name.includes(serarchText))"
? ? ? ? ? ? ? :header-cell-style="{background:'#409EFF',color:'#FFF'}"
? ? ? ? ? ? ? @selection-change="handleRoleChange">
? ? ? <el-table-column align="center" type="selection" width="50" />
? ? ? <el-table-column align="center" label="ID" prop="id" width="50" />
? ? ? <el-table-column align="center" label="角色名稱" prop="name" width="150" />
? ? ? <el-table-column align="center" label="角色代碼" prop="code" width="120" />
? ? </el-table>
? </div>
</template>
<script lang="ts" setup>
import { reactive, ref, watch } from "vue";
const roleData = ref();
roleData.value = [
? {
? ? id: 1,
? ? code: "ROLE_TEST0_1",
? ? name: "測試角色3",
? ? enabled: true,
? },
? {
? ? id: 3,
? ? code: "ROLE_TEST0_3",
? ? name: "系統(tǒng)開發(fā)員",
? ? enabled: true,
? },
];
let roleSelectedData = ref([]);
let serarchText = ref();
const handleRoleChange = (value: any) => {
? roleSelectedData.value = value;
? console.log(value);//選擇selection框 兩次執(zhí)行
};
</script>

我暫且認(rèn)為應(yīng)該是行內(nèi)處理數(shù)據(jù)的時候 (就是行內(nèi)處理data),每一次修改table相關(guān)數(shù)據(jù)或者變量,會重新加載數(shù)據(jù)(觸發(fā)行內(nèi)數(shù)據(jù)處理)從而觸發(fā)table的更新,導(dǎo)致兩次執(zhí)行,一次有你操作的數(shù)據(jù),一次是重置table。

所以有兩種方法解決,第一種是不觸發(fā)table的更新,還有一種是更新后,獲取第一次觸發(fā)的結(jié)果。

  • 如果不是因為行內(nèi)處理數(shù)據(jù)引起,則直接看第二種方法

第一種方法就是,改變你data的數(shù)據(jù)處理方式,不在行內(nèi)進(jìn)行數(shù)據(jù)處理。

<el-input clearable placeholder="搜索..." prefix-icon="el-icon-search" v-model="serarchText"></el-input>
<el-table border stripe
? ? ?:data="transData"
? ? ?:header-cell-style="{background:'#409EFF',color:'#FFF'}"
? ? ?@selection-change="handleRoleChange"
>
</el-table>
<script lang="ts" setup>
const roleData = ref();
roleData.value = [
? {
? ? id: 1,
? ? code: "ROLE_TEST0_1",
? ? name: "測試角色3",
? ? enabled: true,
? },
? {
? ? id: 3,
? ? code: "ROLE_TEST0_3",
? ? name: "系統(tǒng)開發(fā)員",
? ? enabled: true,
? },
];
let serarchText = ref();
const transData = ref([...roleData.value])
watch(serarchText,(newValue)=>{
? if(newValue){
? ? let tempdata = roleData.value
? ? transData.value = tempdata.filter((data) => !newValue || data.name.includes(newValue))
? }else{
? ? transData.value =roleData.value
? }
})
</script>

第二種就是繼續(xù)使用行內(nèi)數(shù)據(jù)處理,table添element-ui內(nèi)自帶的屬性 加row-key以及type="selection"添加reserve-selection,在數(shù)據(jù)更新之后保留第一次觸發(fā)的數(shù)據(jù)。

  • reserve-selection:僅對 type=selection 的列有效,類型為 Boolean,為 true 則會在數(shù)據(jù)更新之后保留之前選中的數(shù)據(jù)(需指定 row-key)
  • row-key:行數(shù)據(jù)的 Key,用來優(yōu)化 Table 的渲染;在使用 reserve-selection 功能與顯示樹形數(shù)據(jù)時,該屬性是必填的。
<el-table border stripe
? ? ? ? ? :data="roleData.filter((data) => !serarchText || data.name.includes(serarchText))"
? ? ? ? ? :header-cell-style="{background:'#409EFF',color:'#FFF'}"
? ? ? ? ? @selection-change="handleRoleChange"
? ? ? ? ? :row-key="(row)=>{row.id}">
? <el-table-column align="center" type="selection" :reserve-selection="true" width="50" />
? <el-table-column align="center" label="ID" prop="id" width="50" />
? <el-table-column align="center" label="角色名稱" prop="name" width="150" />
? <el-table-column align="center" label="角色代碼" prop="code" width="120" />
</el-table>

最近試這個:reserve-selection=“true”,會導(dǎo)致在搜索值變化的時候,造成所選值的更改反轉(zhuǎn)之類的

element-ui的@selection-change學(xué)習(xí)總結(jié)

<template>
  <el-table
    ref="multipleTable"
    :data="tableData3"
    tooltip-effect="dark"
    style="width: 100%"
    @selection-change="handleSelectionChange">
    <el-table-column
      type="selection"
      width="55">
    </el-table-column>
    <el-table-column
      label="日期"
      width="120">
      <template slot-scope="scope">{{ scope.row.date }}</template>
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="120">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址"
      show-overflow-tooltip>
    </el-table-column>
  </el-table>
  <div style="margin-top: 20px">
    <el-button @click="toggleSelection([tableData3[1], tableData3[2]])">切換第二、第三行的選中狀態(tài)</el-button>
    <el-button @click="toggleSelection()">取消選擇</el-button>
  </div>
</template>
 
<script>
  export default {
    data() {
      return {
        tableData3: [{
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1518 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1518 弄'
        }, {
          date: '2016-05-08',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1518 弄'
        }, {
          date: '2016-05-06',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1518 弄'
        }, {
          date: '2016-05-07',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1518 弄'
        }],
        multipleSelection: []
      }
    },
 
    methods: {
      toggleSelection(rows) {
        if (rows) {
          rows.forEach(row => {
            this.$refs.multipleTable.toggleRowSelection(row);
          });
        } else {
          this.$refs.multipleTable.clearSelection();
        }
      },
      handleSelectionChange(val) {
        this.multipleSelection = val;
      }
    }
  }
</script>
handleSelectionChange(val) { this.multipleSelection = val; }

//val 為選中數(shù)據(jù)的集合

通過this.multipleSelection.prop字段 取得每一個選項的值,prop字段就是表格里面子項的prop值。

this.multipleSelection.length為選擇了多少項。 

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實現(xiàn)下拉菜單樹

    vue實現(xiàn)下拉菜單樹

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)下拉菜單樹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Vue中關(guān)閉彈窗組件時銷毀并隱藏操作

    Vue中關(guān)閉彈窗組件時銷毀并隱藏操作

    這篇文章主要介紹了Vue中關(guān)閉彈窗組件時銷毀并隱藏操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue數(shù)據(jù)變化后頁面更新詳細(xì)介紹

    Vue數(shù)據(jù)變化后頁面更新詳細(xì)介紹

    這篇文章主要介紹了Vue在數(shù)據(jù)發(fā)生變化后是如何更新頁面的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • vue3中的ref和reactive定義數(shù)組方式

    vue3中的ref和reactive定義數(shù)組方式

    這篇文章主要介紹了vue3中的ref和reactive定義數(shù)組方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 使用Vue-scroller頁面input框不能觸發(fā)滑動的問題及解決方法

    使用Vue-scroller頁面input框不能觸發(fā)滑動的問題及解決方法

    這篇文章主要介紹了使用Vue-scroller頁面input框不能觸發(fā)滑動的問題,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 解決vue-cli + webpack 新建項目出錯的問題

    解決vue-cli + webpack 新建項目出錯的問題

    下面小編就為大家分享一篇解決vue-cli + webpack 新建項目出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 解決Vue數(shù)據(jù)更新了但頁面沒有更新的問題

    解決Vue數(shù)據(jù)更新了但頁面沒有更新的問題

    在vue項目中,有些我們會遇到修改完數(shù)據(jù),但是視圖卻沒有更新的情況,具體的場景不一樣,解決問題的方法也不一樣,在網(wǎng)上看了很多文章,在此總結(jié)匯總一下,需要的朋友可以參考下
    2023-08-08
  • vue-cli實現(xiàn)多頁面多路由的示例代碼

    vue-cli實現(xiàn)多頁面多路由的示例代碼

    本篇文章主要介紹了vue-cli實現(xiàn)多頁面多路由的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue.js每天必學(xué)之指令系統(tǒng)與自定義指令

    Vue.js每天必學(xué)之指令系統(tǒng)與自定義指令

    Vue.js每天必學(xué)之指令系統(tǒng)與自定義指令,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 淺談Vue.set實際上是什么

    淺談Vue.set實際上是什么

    這篇文章主要介紹了淺談Vue.set實際上是什么,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論

仪征市| 建平县| 平远县| 尼勒克县| 高清| 丰宁| 乃东县| 西和县| 于田县| 洱源县| 湘潭市| 阿拉尔市| 宜宾县| 休宁县| 乐昌市| 吉隆县| 五大连池市| 连平县| 浦东新区| 楚雄市| 东阿县| 靖江市| 林口县| 沧州市| 凤山市| 元江| 石楼县| 宁晋县| 天祝| 江孜县| 宣恩县| 东丰县| 特克斯县| 兴山县| 西城区| 合江县| 颍上县| 威远县| 唐山市| 象山县| 江油市|