• Vue练习CRUD


    1. <template>
    2. <div><input v-model="prefix" placeholder="Filter Surname">div>
    3. <select size="6" v-model="selected">
    4. <option v-for="name in filteredNames" :key="name">{{ name }}option>
    5. select>
    6. <label>Surname: <input v-model="last">label>
    7. <label>Name: <input v-model="first">label>
    8. <div class="buttons">
    9. <button @click="create">Createbutton>
    10. <button @click="update">Updatebutton>
    11. <button @click="del">Deletebutton>
    12. <button @click="reset">Resetbutton>
    13. div>
    14. <p v-if="isShowMessage">{{message}}p>
    15. template>
    16. <script>
    17. const initialNames = () => ['于, 于禁', '许, 许褚', '张, 张郃']
    18. export default {
    19. data() {
    20. return {
    21. names: initialNames(),
    22. selected: '',
    23. prefix: '',
    24. first: '',
    25. last: '',
    26. createMessage: '创建前请输入内容',
    27. updateMessage: '请选择要修改的名称',
    28. delMessage: '请选择要删除的名称',
    29. repeatMessage: '名称已存在',
    30. warn: '最少预留一个名称',
    31. isShowMessage: false,
    32. message: ''
    33. }
    34. },
    35. computed: {
    36. filteredNames() {
    37. return this.names.filter((n) =>
    38. n.toLowerCase().startsWith(this.prefix.toLowerCase())
    39. )
    40. }
    41. },
    42. watch: {
    43. selected(name) {
    44. ;[this.last, this.first] = name.split(', ')
    45. this.isShowMessage = false
    46. }
    47. },
    48. methods: {
    49. create() {
    50. if (this.hasValidInput()) {
    51. const fullName = `${this.last}, ${this.first}`
    52. if (!this.names.includes(fullName)) {
    53. this.names.push(fullName)
    54. this.first = this.last = ''
    55. this.isShowMessage = false
    56. }else{
    57. this.message = this.repeatMessage
    58. this.isShowMessage = true
    59. }
    60. }else{
    61. this.message = this.createMessage
    62. this.isShowMessage = true
    63. }
    64. },
    65. update() {
    66. debugger
    67. if (this.hasValidInput() && this.selected) {
    68. const i = this.names.indexOf(this.selected)
    69. const fullName = `${this.last}, ${this.first}`
    70. if (!this.names.includes(fullName)) {
    71. this.names[i] = this.selected = `${this.last}, ${this.first}`
    72. this.isShowMessage = false
    73. }else{
    74. this.message = this.repeatMessage
    75. this.isShowMessage = true
    76. }
    77. }else{
    78. this.message = this.updateMessage
    79. this.isShowMessage = true
    80. }
    81. },
    82. del() {
    83. if (this.selected) {
    84. if(this.names.length <=1){
    85. alert(this.warn)
    86. return
    87. }
    88. const i = this.names.indexOf(this.selected)
    89. this.names.splice(i, 1)
    90. this.selected = this.first = this.last = ''
    91. this.isShowMessage = false
    92. }else{
    93. this.message = this.delMessage
    94. this.isShowMessage = true
    95. }
    96. },
    97. reset(){
    98. this.names = initialNames()
    99. },
    100. hasValidInput() {
    101. return this.first.trim() && this.last.trim()
    102. }
    103. }
    104. }
    105. script>
    106. <style>
    107. * {
    108. font-size: inherit;
    109. }
    110. input {
    111. display: block;
    112. margin-bottom: 10px;
    113. }
    114. select {
    115. float: left;
    116. margin: 0 1em 1em 0;
    117. width: 14em;
    118. }
    119. .buttons {
    120. clear: both;
    121. }
    122. button + button {
    123. margin-left: 5px;
    124. }
    125. p {
    126. color: red;
    127. }
    128. style>

  • 相关阅读:
    Selenium安装以及案例演示【Java爬虫】
    个人真实项目-FEIGN常见问题分享
    苹果认证Apple Store Connenct api的使用
    安装Redis
    虚拟机构建单体项目及前后端分离项目
    Himall商城Web帮助类删除、获取设置指定名称的Cookie特定键的值(2)
    快速入门Spring Cloud OpenFeign
    iOS小技能:RSA签名、验签、加密、解密的原理
    Factory工厂合约的实现-solidity实现智能合约教程(6)
    从零开始的深度学习之旅(2)
  • 原文地址:https://blog.csdn.net/m0_58746619/article/details/134735536