Skip to content

Commit a303dd7

Browse files
committed
✅ example of model bi-binding
1 parent 37604c2 commit a303dd7

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<template>
2+
<div class="border border-solid p-4 border-1">
3+
New defineModel is: {{ model }}
4+
</div>
5+
<div class="border border-solid cursor-pointer p-4 border-1" @click="update">
6+
👶 Child ++
7+
</div>
8+
</template>
9+
10+
<script lang="ts" setup>
11+
const model = defineModel<number>({ default: 0 });
12+
// const loading1 = defineModel<boolean>({ default: false });
13+
// const loading2 = defineModel<boolean>('loading', { required: true });
14+
15+
function update() {
16+
increase(model);
17+
}
18+
19+
function increase(value:Ref<number>){
20+
value.value++;
21+
}
22+
</script>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<template>
2+
<div class="border border-solid p-4 border-1">
3+
Old props+emits is: {{ model }}
4+
</div>
5+
<div class="border border-solid cursor-pointer p-4 border-1" @click="update">
6+
👶 Child ++
7+
</div>
8+
</template>
9+
10+
<script lang="ts" setup>
11+
const props = defineProps<{ modelValue: number }>();
12+
const emits = defineEmits<{ 'update:modelValue': [number] }>();
13+
14+
const model = computed({
15+
get: () => props.modelValue,
16+
set: val => emits('update:modelValue', val),
17+
});
18+
19+
function update() {
20+
increase(model);
21+
}
22+
23+
function increase(value:Ref<number>){
24+
value.value++;
25+
}
26+
</script>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<template>
2+
<div class="flex flex-col gap-4">
3+
<div class="border border-solid p-2 border-1 flex flex-col gap-2">
4+
<div class="border border-solid p-4 border-1">
5+
Parent ModelNew {{ modelNew }}
6+
</div>
7+
<div class="border border-solid cursor-pointer p-4 border-1" @click="modelNew++">
8+
👨🏻 Parent ++
9+
</div>
10+
<div class="border border-solid cursor-pointer p-4 border-1" @click="modelNew=modelNew+1">
11+
👨🏻 Parent + 1
12+
</div>
13+
<ModelNew v-model="modelNew" />
14+
</div>
15+
<div class="border border-solid p-2 border-1 flex flex-col gap-2">
16+
<div class="border border-solid p-4 border-1">
17+
Parent ModelOld {{ modelOld }}
18+
</div>
19+
<div class="border border-solid cursor-pointer p-4 border-1" @click="modelOld++">
20+
👨🏻 Parent ++
21+
</div>
22+
<div class="border border-solid cursor-pointer p-4 border-1" @click="modelOld=modelOld+1">
23+
👨🏻 Parent +1
24+
</div>
25+
<ModelOld v-model="modelOld" />
26+
</div>
27+
</div>
28+
</template>
29+
30+
<script lang="ts" setup>
31+
definePageMeta({
32+
name: 'ModelRef binding',
33+
});
34+
35+
const modelNew = shallowRef(1000);
36+
const modelOld = shallowRef(2000);
37+
</script>

0 commit comments

Comments
 (0)