5.姓名案例_watch实现.html 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>姓名案例_watch实现</title>
  8. <!-- 引入vue -->
  9. <script type="text/javascript" src="../js/vue.js"></script>
  10. </head>
  11. <body>
  12. <!--
  13. computed和watch之间的区别:
  14. 1、computed能完成的功能,watch都可以完成。
  15. 2、watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。
  16. 两个重要的小原则:
  17. 1、所有被Vue管理的函数,最好写成普通函数,这样this的指向才是vm或组件实例对象。
  18. 2、所有不被Vue管理的函数(定时器的回调函数、Ajax的回调函数、Promise的回调函数等),
  19. 最好写成箭头函数,这样this的指向才是vm或组件实例对象。
  20. -->
  21. <!-- 准备好一个容器 -->
  22. <div id="root">
  23. 姓:<input type="text" v-model="firstName"></input><br><br>
  24. 名:<input type="text" v-model="lastName"></input><br><br>
  25. 全名:<span>{{fullName}}</span>
  26. </div>
  27. </body>
  28. <script type="text/javascript">
  29. Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示
  30. const vm = new Vue({
  31. el:'#root',
  32. data:{
  33. firstName:'张',
  34. lastName:'三',
  35. fullName:'张 - 三'
  36. },
  37. watch:{
  38. firstName(val){
  39. setTimeout(() => {
  40. this.fullName = val + '-' + this.lastName
  41. }, 1000);
  42. },
  43. lastName(val){
  44. this.fullName = this.firstName + '-' + val
  45. }
  46. }
  47. })
  48. </script>
  49. </html>