10.计算属性&监听器.html 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <div>姓: <input type="text" v-model="firstName"></div>
  11. <div>名: <input type="text" v-model="lastName"></div>
  12. <div>
  13. <!-- 1.{{firstName + lastName}} -->
  14. </div>
  15. <div>
  16. 2.{{getName()}}
  17. </div>
  18. <div>
  19. 3.{{myName}}
  20. </div>
  21. </div>
  22. <script src="./vue.js"></script>
  23. <script>
  24. var app = new Vue({
  25. el:"#app",
  26. data:{
  27. firstName:"胡",
  28. lastName:"图图"
  29. },
  30. methods:{
  31. getName() {
  32. console.log("1")
  33. return this.firstName + this.lastName;
  34. }
  35. },
  36. computed:{
  37. myName:{
  38. get() {
  39. console.log('2')
  40. return this.firstName + this.lastName
  41. },
  42. set() {
  43. this.firstName = '懒';
  44. this.lastName = '羊羊';
  45. }
  46. },
  47. // xxx:{
  48. // }
  49. },
  50. watch:{
  51. firstName(newValue,oldValue) {
  52. console.log(newValue,oldValue,'watch')
  53. },
  54. lastName:{
  55. immediate: true, //立即监听
  56. deep: true, //深度
  57. handler(newValue,oldValue) {
  58. console.log(newValue,oldValue,'深度')
  59. }
  60. }
  61. }
  62. })
  63. // app.myName = ''
  64. </script>
  65. </body>
  66. </html>