<el-select clearable filterable v-model.lazy="scope.row.goods_id" v-el-select-loadmore="loadMore" @filter-change="selectFilter" :popper-append-to-body="false" @visible-change="selectVisible"> <el-option v-for="goods in merchandiseNameData_.slice(0, range)" :key="goods.data" :label="goods.num" :value="goods.data"> </el-option> </el-select>为什么需要点击一次才展示数据,如何解决
时间: 2023-07-06 21:37:50 浏览: 155
这段代码中需要点击一次才能展示数据的原因是因为 loadMore 方法还没有被触发来加载数据。loadMore 方法是一个自定义方法,它会在 select 组件被打开时自动触发。如果这个方法没有被正确地实现,那么就需要手动点击一下才能展示数据了。
为了解决这个问题,可以在组件加载时就执行 loadMore 方法来预加载数据,这样就不需要手动点击来触发 loadMore 方法了。例如在 mounted 钩子函数中调用 loadMore 方法:
```
mounted() {
this.loadMore()
}
```
另外,如果数据量过大,加载需要一定时间,也可以在 loadMore 方法中添加一个 loading 状态,来提示用户正在加载数据,例如:
```
loadMore() {
this.loading = true
// 加载数据
// 加载完成后
this.loading = false
}
```
这样就可以在加载数据时显示一个 loading 状态,让用户知道数据正在加载中。
相关问题
<el-select clearable filterable v-model.lazy="scope.row.goods_id" v-el-select-loadmore="loadMore" :filter-method="selectFilter" :popper-append-to-body="false" @visible-change="selectVisible"> <el-option v-for="goods in merchandiseNameData_.slice(0, range)" :key="goods.data" :label="goods.num" :value="goods.data"> </el-option> </el-select>获取不到模糊搜索的值
根据你提供的代码,`v-model.lazy="scope.row.goods_id"` 绑定了 `el-select` 的值,但是这个值在 `selectFilter` 方法中被用作了模糊搜索的参数,如果在 `selectFilter` 中无法获取到这个值,那么确实无法进行模糊搜索。
你可以尝试使用 `$event` 来获取 `el-select` 组件的值,具体做法如下:
1. 修改 `selectFilter` 方法,将参数改为 `$event`。
2. 在 `el-select` 上绑定 `@filter-change="selectFilter"` 事件。
3. 在 `selectFilter` 方法内部获取 `$event` 的值,将其作为模糊搜索的参数即可。
修改后的代码如下:
```
<el-select clearable filterable v-model.lazy="scope.row.goods_id" v-el-select-loadmore="loadMore"
:filter-method="selectFilter" :popper-append-to-body="false" @visible-change="selectVisible"
@filter-change="selectFilter">
<el-option v-for="goods in merchandiseNameData_.slice(0, range)" :key="goods.data"
:label="goods.num" :value="goods.data">
</el-option>
</el-select>
...
selectFilter(val) {
let filterArr = this.merchandiseNameData.filter(item => {
return item.label.toLowerCase().includes(val.toLowerCase());
});
this.merchandiseNameData_ = filterArr;
return filterArr;
}
```
这样就可以在 `selectFilter` 方法中获取到 `el-select` 组件的值,并进行模糊搜索了。
<el-select clearable filterable v-model.lazy="scope.row.goods_id" v-el-select-loadmore="loadMore" @filter-change="selectFilter" :popper-append-to-body="false" @visible-change="selectVisible"> <el-option v-for="goods in merchandiseNameData_.slice(0, range)" :key="goods.data" :label="goods.num" :value="goods.data"> </el-option> </el-select>为什么需要点击一次才展示数据
这段代码是使用了 Element UI 的 el-select 组件,并且使用了 lazy 模式的 v-model 双向绑定,同时也使用了 filterable 过滤器和 clearable 可清空选项。在这段代码中,需要点击一次才展示数据的原因可能是因为 loadMore 方法还没有被触发来加载数据。loadMore 方法是一个自定义方法,它会在 select 组件被打开时自动触发。如果这个方法没有被正确地实现,那么就需要手动点击一下才能展示数据了。另外,也有可能是因为数据量过大,加载需要一定的时间,因此需要等待一段时间才能展示数据。
阅读全文