10.计算属性及监听器.html 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. <p>
  11. 姓: <input type="text" v-model="firstName">
  12. </p>
  13. <p>
  14. 名: <input type="text" v-model="lastName">
  15. </p>
  16. <!-- 1.插值模版 -->
  17. <p>我的名字是:{{firstName + lastName}}</p>
  18. <!-- 2.方法 -->
  19. <p>我的名字是:{{getName()}}</p>
  20. <!-- 3.计算属性
  21. methods和computed在初始使用时候 没有区别
  22. 但是 当页面设计数据量大的计算时候 计算属性可以减少性能消耗
  23. 同步操作
  24. Object.defineProperty(); getter 获取数据 ; setter 修改数据
  25. -->
  26. <p>我的名字是:{{fullName}}</p>
  27. <p>我的名字是:{{myName}}</p>
  28. <!-- 4.侦听器 -->
  29. <p>我的名字是:{{full}}</p>
  30. </div>
  31. <script src="./vue.js"></script>
  32. <script>
  33. var vm = new Vue({
  34. data:{
  35. firstName:"胡",
  36. lastName:"图图",
  37. full: ""
  38. },
  39. methods:{
  40. getName() {
  41. console.log("12121")
  42. return this.firstName + this.lastName;
  43. }
  44. },
  45. created() {},
  46. // 计算属性
  47. computed:{
  48. fullName() {
  49. console.log("计算属性")
  50. return this.firstName + this.lastName
  51. },
  52. myName:{
  53. get() {
  54. console.log("获取")
  55. return this.firstName + this.lastName
  56. },
  57. set(val) {
  58. console.log(val,'修改')
  59. }
  60. }
  61. },
  62. watch:{
  63. // firstName(news,old) {
  64. // console.log(news,'news')
  65. // console.log(old,'old')
  66. // this.full = news + this.lastName;
  67. // },
  68. firstName: {
  69. handler(news,old) {
  70. this.full = news + this.lastName;
  71. },
  72. immediate: true, //立即监听
  73. deep: true // 深度监听
  74. },
  75. lastName(news,old) {
  76. console.log(news,'1')
  77. console.log(old,'2')
  78. this.full = this.firstName + news;
  79. },
  80. }
  81. })
  82. vm.$mount("#app");
  83. vm.myName = '懒羊羊'
  84. </script>
  85. </body>
  86. </html>