一个select框组件,其中的数据是从后端返回的,打开这个组件时往里传入了value值,但是页面打开时也会显示这个value值,等后端结果返回才能显示对应的label值,如何让组件先不渲染value直接渲染label?
将请求的生命周期放在async created中没用
我的思路是,子组件内部先根据option的长度判定是否传给Select组件value,当option为空的时候,传给它undefined,然后通过Select的change事件emit数据给父组件,你的单选联动可以在单选改变之后,调子组件的获取options方法
<template> <el-select :value="selectVal" @change="handleChange"> <el-option v-for="item in selectOptions" :key="item.value" :label="item.label" :value="item.value" /> </el-select></template><script>export default { props: ['value'], emits: ['update:value'], data() { return { selectOptions: [], } }, computed: { selectVal() { return this.selectOptions.length ? this.value : undefined } }, created() { this.getOptions() }, methods: { async getOptions() { this.selectOptions = [] // 异步请求任务 // awati axios(...) this.selectOptions = [ { value: 'Option1', label: 'Option1', }, { value: 'Option2', label: 'Option2', }, ] }, handleChange(e) { this.$emit('update:value', e) } }}</script>
<template> ... <span v-if="loading"> loading</span> <Select v-else :value="value"> <Option v-for="item in options" :label="item.label" :value="item.value"></Option> </Select> ... </template> <script> export default { data() { return { options: [], value: null, loading: false } }, created() { this.handleGetOptions() }, methods: { async handleGetOptions() { this.options = [] this.loading = true try { let res = await this.$api.get('api/v1/options') this.options = res.data } catch (error) { console.log(error) } finally { this.loading = false } } } } </script>
加个loading遮罩,等请求完了再显示select
页面打开和打开组件是同一个操作吗,页面打开时有赋值value吗
哎,我研究了好久,最后我的解决方案是父组件监听每个子组件的change,子组件获取数据之后再emit值,父组件监听到之后查一下是不是已返回的组件数=所有组件数了
下面是父组件的代码
callback() { if (!this.searchTpl) return; if (Object.keys(this.options).length < this.searchTpl.length) return; const optionMap = new Map() for (let o in this.options) { optionMap.set(o, this.options[o]) } const query = [] for (let item of this.searchTpl) { item.value = optionMap.get(item.field.toString()) query.push(item) } this.$parent.query = query; this.$parent.getList() },
这是方法体 这是在created调用这个方法 问题: 通过这个方法获取的数据,我在这个方法的.then后面进行console对res.rows进行输出时,数据是存在的。 将这个Patientdata变量加载进页面时 数据也是存在的。 但是我现在想在created或者是mounted对Patientdata数据进行操作后再加载进页面内,在写操作数据的方法时,发现怎么都获取不到Patientdata的
本文向大家介绍Javascript vue.js表格分页,ajax异步加载数据,包括了Javascript vue.js表格分页,ajax异步加载数据的使用技巧和注意事项,需要的朋友参考一下 分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理。 效果: 代码: 1.注册一个组件 js 模板: HTML: 当点击分页链接的时候
布局偏移该怎么解决? 初始加载页面的时候,需要先请求数据,然后再显示。此时就会出现一个问题,在请求未响应的时候数据为空,显示区域未空,当得到数据之后,显示区域数据扩充,这就造成了数据便宜。 该显示区域的大小由数据决定,不能设置一个固定的大小。 我想如果可以在挂载之前获取这个数据的话,应该可以避免这个布局偏移。但是获取数据的操作是异步的,不会等待获取完之后再挂载。或者说在路由跳转的时候获取这个数据。
本文向大家介绍vue.js 表格分页ajax 异步加载数据,包括了vue.js 表格分页ajax 异步加载数据的使用技巧和注意事项,需要的朋友参考一下 Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。 分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理。 1.注册一个组件 js 模板: H
主要内容:echarts_test_data.json 数据:,实例,实例,实例ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项就行。 ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项就行。 json 数据: echarts_test_
问题内容: 我有很多关于在Android应用程序中处理异步数据库的问题。 由于我知道数据库是异步的,因此我尝试了几种方法来处理它。如您在代码中所见,我有两个函数需要在数据库中使用数组。我的第一个函数()将对数据库中的数组应用更改,而我的第二个函数()需要将此数组与从我的第一个函数中应用的更改一起使用。这是我的代码: 这是setArray_for_database的代码: 这是我的把戏。具有另一个内