Vue计算属性侦听器和过滤器

柔光的暖阳◎ 2021-07-24 15:04 557阅读 0赞

一 计算属性和侦听器

  • 计算属性:某些结果是基于之前数据实时计算出来的,我们可以利用计算属性来完成。
  • 侦听器:Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。

二 代码

  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. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <!-- 某些结果是基于之前数据实时计算出来的,我们可以利用计算属性。来完成 -->
  12. <ul>
  13. <li>西游记; 价格:{
  14. {xyjPrice}},数量:<input type="number" v-model="xyjNum"> </li>
  15. <li>水浒传; 价格:{
  16. {shzPrice}},数量:<input type="number" v-model="shzNum"> </li>
  17. <li>总价:{
  18. {totalPrice}}</li>
  19. {
  20. {msg}}
  21. </ul>
  22. </div>
  23. <script src="../node_modules/vue/dist/vue.js"></script>
  24. <script>
  25. //watch可以让我们监控一个值的变化。从而做出相应的反应。
  26. new Vue({
  27. el: "#app",
  28. data: {
  29. xyjPrice: 99.98,
  30. shzPrice: 98.00,
  31. xyjNum: 1,
  32. shzNum: 1,
  33. msg: ""
  34. },
  35. computed: {
  36. totalPrice() {
  37. return this.xyjPrice * this.xyjNum + this.shzPrice * this.shzNum
  38. }
  39. },
  40. watch: {
  41. xyjNum(newVal, oldVal) {
  42. if (newVal >= 3) {
  43. this.msg = "库存超出限制";
  44. this.xyjNum = 3
  45. } else {
  46. this.msg = "";
  47. }
  48. }
  49. },
  50. })
  51. </script>
  52. </body>
  53. </html>

三 效果

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70

四 过滤器代码

  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. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <!-- 过滤器常用来处理文本格式化的操作。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 -->
  11. <div id="app">
  12. <ul>
  13. <li v-for="user in userList">
  14. {
  15. {user.id}} ==> {
  16. {user.name}} ==> {
  17. {user.gender == 1?"男":"女"}} ==>
  18. {
  19. {user.gender | genderFilter}} ==> {
  20. {user.gender | gFilter}}
  21. </li>
  22. </ul>
  23. </div>
  24. <script src="../node_modules/vue/dist/vue.js"></script>
  25. <script>
  26. // 全局过滤器
  27. Vue.filter("gFilter", function (val) {
  28. if (val == 1) {
  29. return "男~~~";
  30. } else {
  31. return "女~~~";
  32. }
  33. })
  34. let vm = new Vue({
  35. el: "#app",
  36. data: {
  37. userList: [
  38. { id: 1, name: 'jacky', gender: 1 },
  39. { id: 2, name: 'peter', gender: 0 }
  40. ]
  41. },
  42. filters: {
  43. // filters 定义局部过滤器,只可以在当前vue实例中使用
  44. genderFilter(val) {
  45. if (val == 1) {
  46. return "男";
  47. } else {
  48. return "女";
  49. }
  50. }
  51. }
  52. })
  53. </script>
  54. </body>
  55. </html>

五 效果

202010221922417.png

发表评论

表情:
评论列表 (有 0 条评论,557人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue计算属性侦听器

    [vue2计算属性和侦听器官网介绍][vue2] 1、功能不同,计算属性用于解决模板语法冗余问题;侦听器侦听data中某一个数据变化。 2、计算属性有缓存机制,侦听器没有缓

    相关 Vue计算属性侦听器

            本博客记录了小编在学习Vue过程中的体会与感悟,简单来说就是小编的学习笔记,学习地址主要为Vue的官网,官网地址为:[《Vue官方文档》][Vue]。相关学习笔