天天看點

elementui 中的表格首列複選框的點選事件

先上一張項目中的圖檔:

elementui 中的表格首列複選框的點選事件

 需求:

  1、點選表格資料,會彈出一個問題詳細資料的面闆表單資料,說明行點選有一個事件。

  2、點選首列複選框有一個 this.$message( ) 的提示操作彈框。

解析:

  點選複選框首先不能事件冒泡,觸發表格的行點選事件。一開始給複選框綁定的是 change 事件,達不到要求。後來綁定 click 事件,為了不事件冒泡,添加了 .stop ,後來觸發不了事件,上網搜解決方案,有網友建議加 .native ,即 

@click.stop.native="handleSelectionChange(scope.$index, scope.row)" ,發現事件觸發兩次,因為是點選複選框要彈一個操作面闆,事件觸發兩次就表示會彈兩次面闆,不符合需求,後來搜了很多文章,無意間看到有網友提出要加 .prevent ,因為架構是封裝的,渲染的時候,會觸發 label 的事件,貌似是這樣,也不是很了解。就加了 .prevent ,即 

@click.native.prevent.stop="handleSelectionChange(scope.$index, scope.row)"後來發現事件雖然觸發了,但是複選框不選中,因為事件被阻止了。

  一開始卡在這裡了很久,後來想明白了,點選複選框後的效果是首先彈一個操作框,同時又不觸發表格的行點選事件。目前來看這兩個要求都達到了。至于複選框選中不選中,可以根據表格資料加載的時候,處理一下ajax擷取到的表格資料,往資料裡面添加 checked 屬性,來控制複選框是否被選中。

  是以,點選複選框,彈一個操作框,如下圖:

  

elementui 中的表格首列複選框的點選事件

  點選确定按鈕之後,然後重新擷取表格資料,表格資料被改變,表格重新加載,可以達到複選框選中或者不選中的效果。

  至此,問題完美解決。

後語:

  文章啰嗦了點,如果你有碰到同樣的項目需求,或者碰到同樣的問題,希望這篇文章對踩坑的你有所幫助。