提交学习笔记专用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.1 KiB

  1. <template>
  2. <div class="person">
  3. <!-- <input type="text" v-bind:value="firstName"></input><br> 单向绑定-->
  4. <input type="text" v-model:="firstName"></input><br> <!--双向绑定-->
  5. <input type="text" :value="lastName"></input><br>
  6. 全名<span>{{fullName}}</span>
  7. </div>
  8. </template>
  9. <script lang="ts" setup name="Person2">
  10. import {ref,computed, toRefs,toRef} from 'vue'
  11. let firstName = ref('zhang')
  12. let lastName = ref('san')
  13. // 计算属性——只读取,不修改
  14. /* let fullName = computed(()=>{
  15. return firstName.value + '-' + lastName.value
  16. }) */
  17. // 计算属性——既读取又修改
  18. let fullName = computed({
  19. get() {
  20. return firstName.value + '-' + lastName.value;
  21. },
  22. set(val) {
  23. const parts = val.split('-');
  24. if (parts[0]) firstName.value = parts[0];
  25. if (parts[1]) lastName.value = parts[1];
  26. }
  27. })
  28. function changeFullName(){
  29. fullName.value = 'li-si'
  30. }
  31. </script>
  32. <style scoped>
  33. .person{
  34. background-color: aquamarine;
  35. box-shadow: 0 0 10px;
  36. border-radius: 10px;
  37. padding: 20px;
  38. }
  39. </style>