当前位置: 代码迷 >> 综合 >> Vue slot-scope=‘scope‘的理解
  详细解决方案

Vue slot-scope=‘scope‘的理解

热度:91   发布时间:2023-12-16 04:33:47.0

首先要理解2个知识点:
1.插槽
2.作用域插槽

插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示、以及怎样显示由父组件来决定。 实际上,一个slot最核心的两个概念这里就点出来了,是显示不显示和怎样显示

作用域插槽实际上是带有数据的插槽,可以获取到父组件传递的参数,将这些参数使用到子组件插槽里

<w-table-column prop="je" label="总价" width="100"><template slot-scope="scope"><span>{
    {
    Number(scope.row.je).toFixed('2')}}</span></template>
</w-table-column>

其实这一段很多时候也会用到显示表格时,当前行数据的获取也会用到插槽

<el-table><el-table-column width="150" align="center" label="Status"><template slot-scope="scope"><el-tag :type="scope.row.status | statusFilter">{
    {
    scope.row.status}}</el-tag></template></el-table-column>
</el-table>

之前好像直接是scope,现在统一成了slot-scope,其语义更加的明确。
scope相当于一行的数据, scope.row相当于当前行的数据对象。
这里就是用插槽 拿到当前行 row是个内置的属性 ,vue slot的scope传递值是父作用域中的源数据改变,值会同步改变。且{ {scope.$index}}可以获取当前行的index。

// index可以用来设置index, :row 可以设置行内内置对象
<slot :row="item" :$index="i"></slot>

也可以参考此篇讲解,个人感觉写得很详细很到位。
https://blog.csdn.net/houyibing930920/article/details/89513246

  相关解决方案