Vue中的slot-scope=“scope“

﹏ヽ暗。殇╰゛Y 2022-10-22 12:56 355阅读 0赞

背景:
在这里插入图片描述
点击右边标签生成左边表格的一条数据,表格中左边两列是标签自带的数据(后端数据),表格右边两列字段是前端新加的(用户新输入的),提交时要将整条数据都提交给后端,用到插槽:
在这里插入图片描述
在这里插入图片描述
输入完毕后,打印表格数据:
在这里插入图片描述
可以看到新加的两个字段已经在tableData中的每一条row中了,并且可以通过scope.row.字段名,获取到。
附录

  1. <template>
  2. <el-table :data="tableData" style="width: 100%">
  3. //---:data="用于存放请求数据回来的数组"
  4. <el-table-column label="索引值" width="400">
  5. <template slot-scope="scope">
  6. //--- 这里取到当前单元格
  7. <span>{
  8. { scope.$index }}</span>//--- scope.$index就是索引
  9. </template>
  10. </el-table-column>
  11. <el-table-column label="标题" width="350">
  12. <template slot-scope="scope">
  13. //--- 这里取到当前单元格
  14. <span>{
  15. { scope.row.title }}</span>
  16. //--- scope.row 直接取到该单元格对象,就是数组里的元素对象,即是tableData[scope.$index]
  17. //---.title 是对象里面的title属性的值
  18. </template>
  19. </el-table-column>
  20. <el-table-column label="操作">
  21. <template slot-scope="scope">
  22. //--- 这里取到当前单元格
  23. <el-dropdown size="medium" split-button type="primary">
  24. 更多
  25. <el-dropdown-menu slot="dropdown">
  26. <el-dropdown-item @click.native.prevent="handleEdit(scope.$index, scope.row)">
  27. 编辑
  28. </el-dropdown-item>
  29. <el-dropdown-item @click.native.prevent="getUp(scope.$index, scope.row)">
  30. 上升
  31. </el-dropdown-item>
  32. <el-dropdown-item @click.native.prevent="getDown(scope.$index, scope.row)">
  33. 下降
  34. </el-dropdown-item>
  35. <el-dropdown-item @click.native.prevent="handleDelete(scope.$index, scope.row)">
  36. 删除
  37. </el-dropdown-item>
  38. //---这里的点击事件已经不是在根元素上了,因为多套了几层结构。
  39. //---这里的点击事件如果没有加上 .native 则点击无效!
  40. //---这里的点击事件要加上 .native 表示监听组件根元素的原生事件。
  41. //---这里的点击事件不需要 .prevent 也可以实现相同效果
  42. </el-dropdown-menu>
  43. </el-dropdown>
  44. </template>
  45. </el-table-column>
  46. </el-table>
  47. </template>
  48. <script>
  49. export default {
  50. data () {
  51. return {
  52. tableData: [{ title: 123, age: 11 }, { title: 456, age: 18 }]
  53. // ---为了效果先给值,一般情况下为空,其实际值是后台接口请求回来的
  54. }
  55. },
  56. methods: {
  57. handleDelete (index, row) {
  58. this.tableData.splice(index + 1, 1)// ---前端删除index要+1 !!!!!!!
  59. // ---下面是后端数据删除,可以不看
  60. axios.post(config.newsDelete, // ---后端数据删除
  61. {
  62. id: row.id// ---传入被删除的对象的id值
  63. },
  64. {
  65. headers: {
  66. Authorization: 'Bearer ' + sessionStorage.getItem('token')// ---请求头验证
  67. }
  68. }
  69. )
  70. .then((res) => {
  71. this.rendering()// ---删除了重新渲染
  72. })
  73. }
  74. }
  75. }
  76. </script>
  77. <style>
  78. </style>

发表评论

表情:
评论列表 (有 0 条评论,355人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue$nextTick

    在下次DO更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,获取更新后的DOM,vue在更新DOM时是异步更新队列,视图需要等队列中所有数据变化完成之后,再统一进行