【问题标题】:Vue.js and Vuetify slot-scopeVue.js 和 Vuetify 插槽范围
【发布时间】:2017-12-07 00:47:03
【问题描述】:

我真的只是不确定 slot-scopes 是如何工作的。想知道是否有人可以帮助我解决这个(看似)非常简单的问题。

<v-data-table>
    <template slot="items" slot-scope="props">
        <tr @click="props.expanded = !props.expanded">

我要做的是手动更新“道具”以根据外部事件扩展此行。问题是,我无法弄清楚如何在上述上下文之外访问它。 props.expanded = !props.expanded 工作正常。

有什么想法吗?

【问题讨论】:

标签: javascript vue.js vuetify.js


【解决方案1】:

组件中似乎没有内置方法。由于数据表创建了它自己的扩展对象并且不使用传入的道具。

您可以使用 refVue page on child component refs.

以下代码会将数据表上的 ref 设置为 accesshere

<v-data-table ref="accesshere" :headers="headers" :items="dataTable" 
:search="search" item-key="id">

现在您可以使用 this.$refs.accesshere.expanded['nameofkey'] = false 访问该对象(将其设置为 false 将关闭展开的表格行)

这是一个codepen 展示它的实际应用。

展开的对象存在问题,直到您第一次展开一行时才会填充它。因此,如果您执行以下操作。它不会看到这些更改(除非您强制更新组件),因此不会立即展开该行。

 methods: {
   itemShow () {
     this.$refs.accesshere.expanded['2'] = true
     this.$forceUpdate() // This works, I don't know if it is recommended though
  }
 }

【讨论】:

  • 乔丹,感谢您的回复!我已经完成了这项工作,但它有一些奇怪的副作用。所以,我现在要做的是在添加新行后扩展它。所以我尝试了: this.$refs.accesshere.expanded['2'] = true;如果我这样做,它就会起作用。$forceUpdate(),就像你提到的那样。但是,在那之后,它就不能正常工作了。我不能再点击它来折叠它。如果我单击另一行,它会正常折叠,而其他行仍然可以正常工作。知道为什么会发生这种情况,和/或如何解决吗?
猜你喜欢
  • 2019-07-04
  • 2021-12-07
  • 2018-10-22
  • 2020-11-14
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
相关资源
最近更新 更多