fix(tab): 选项卡 tab-item 组件套用 for 循环导致 props 无法获取
This commit is contained in:
parent
bda7e2368c
commit
024b166d59
@ -7,6 +7,7 @@
|
|||||||
<lay-timeline-item title="0.1.6">
|
<lay-timeline-item title="0.1.6">
|
||||||
[修复] menu 菜单 selectedKey 选中项 openKeys 打开项 props 双绑。<br>
|
[修复] menu 菜单 selectedKey 选中项 openKeys 打开项 props 双绑。<br>
|
||||||
[修复] tab 选项卡 v-model 激活项 双绑。<br>
|
[修复] tab 选项卡 v-model 激活项 双绑。<br>
|
||||||
|
[修复] tab 选项卡 tab-item 组件套用 for 循环无法获取 props 属性。<br>
|
||||||
[新增] page 分页 prev 插槽。<br>
|
[新增] page 分页 prev 插槽。<br>
|
||||||
[新增] page 分页 next 插槽。<br>
|
[新增] page 分页 next 插槽。<br>
|
||||||
</lay-timeline-item>
|
</lay-timeline-item>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
::: demo
|
::: demo
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
{{tabs}}
|
||||||
<lay-menu v-model:selectedKey="selectedKey" v-model:openKeys="openKeys" :tree="isTree">
|
<lay-menu v-model:selectedKey="selectedKey" v-model:openKeys="openKeys" :tree="isTree">
|
||||||
<lay-menu-item title="工作空间" id="0">
|
<lay-menu-item title="工作空间" id="0">
|
||||||
<lay-menu-child-item id="1" title="控制台">
|
<lay-menu-child-item id="1" title="控制台">
|
||||||
@ -21,8 +22,9 @@
|
|||||||
</lay-menu-item>
|
</lay-menu-item>
|
||||||
</lay-menu>
|
</lay-menu>
|
||||||
<lay-tab type="brief" v-model="selectedKey">
|
<lay-tab type="brief" v-model="selectedKey">
|
||||||
<lay-tab-item title="选项一" id="1"><div style="padding:20px">选项一</div></lay-tab-item>
|
<lay-tab-item v-for="tab in tabs" :key="tab" :title="tab.title" :id="tab.id">
|
||||||
<lay-tab-item title="选项二" id="2"><div style="padding:20px">选项二</div></lay-tab-item>
|
{{ tab }}
|
||||||
|
</lay-tab-item>
|
||||||
</lay-tab>
|
</lay-tab>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -34,18 +36,28 @@ export default {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
|
const tabs = ref([{
|
||||||
|
id:'1',title:'选项一'
|
||||||
|
},{
|
||||||
|
id:'2',title:'选项二'
|
||||||
|
}])
|
||||||
|
|
||||||
const isTree = ref(true);
|
const isTree = ref(true);
|
||||||
|
|
||||||
const selectedKey = ref("1");
|
const selectedKey = ref("1");
|
||||||
|
|
||||||
const openKeys = ref(["0"]);
|
const openKeys = ref(["0"]);
|
||||||
|
|
||||||
const change = function (id) {
|
const change = function (id) {
|
||||||
selectedKey.value = id
|
selectedKey.value = id
|
||||||
};
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isTree,
|
isTree,
|
||||||
selectedKey,
|
selectedKey,
|
||||||
openKeys,
|
openKeys,
|
||||||
change,
|
change,
|
||||||
|
tabs
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="layui-nav-item">
|
<li class="layui-nav-item">
|
||||||
<a href="javascript:void(0)"> 0.1.4 </a>
|
<a href="javascript:void(0)"> 0.1.6 </a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</lay-header>
|
</lay-header>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@layui/layui-vue",
|
"name": "@layui/layui-vue",
|
||||||
"version": "0.1.4",
|
"version": "0.1.6",
|
||||||
"description": "a component library for Vue 3 base on layui-vue",
|
"description": "a component library for Vue 3 base on layui-vue",
|
||||||
"main": "lib/layui-vue.umd.js",
|
"main": "lib/layui-vue.umd.js",
|
||||||
"module": "lib/layui-vue.es.js",
|
"module": "lib/layui-vue.es.js",
|
||||||
|
@ -44,18 +44,6 @@ const selectedKey = computed({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
watch(selectedKey, function (val) {
|
|
||||||
emit('update:selectedKey', val)
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(
|
|
||||||
openKeys,
|
|
||||||
function (val) {
|
|
||||||
emit('update:openKeys', val)
|
|
||||||
},
|
|
||||||
{ deep: true }
|
|
||||||
)
|
|
||||||
|
|
||||||
provide('isTree', isTree)
|
provide('isTree', isTree)
|
||||||
provide('selectedKey', selectedKey)
|
provide('selectedKey', selectedKey)
|
||||||
provide('openKeys', openKeys)
|
provide('openKeys', openKeys)
|
||||||
|
@ -28,16 +28,18 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import tabItem from "../tabItem/index.vue"
|
import tabItem from '../tabItem/index.vue'
|
||||||
import {
|
import {
|
||||||
|
defineProps,
|
||||||
Component,
|
Component,
|
||||||
computed,
|
computed,
|
||||||
defineProps,
|
useSlots,
|
||||||
provide,
|
provide,
|
||||||
|
VNode,
|
||||||
Ref,
|
Ref,
|
||||||
ref,
|
ref,
|
||||||
useSlots,
|
onUpdated,
|
||||||
VNode
|
onMounted,
|
||||||
} from 'vue'
|
} from 'vue'
|
||||||
|
|
||||||
const slot = useSlots()
|
const slot = useSlots()
|
||||||
@ -55,7 +57,15 @@ const setItemInstanceBySlot = function (nodeList: VNode[]) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
setItemInstanceBySlot(slots as any[])
|
onUpdated(() => {
|
||||||
|
childrens.value = []
|
||||||
|
setItemInstanceBySlot((slot.default && slot.default()) as VNode[])
|
||||||
|
})
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
childrens.value = []
|
||||||
|
setItemInstanceBySlot((slot.default && slot.default()) as VNode[])
|
||||||
|
})
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
type?: string
|
type?: string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user