• Vue.js学习使用心得(三)


    一、计算属性

    计算属性关键词: computed

    <body>
    <div id="app">
      <p>原始字符串: {{ message }}</p>
      <p>计算后反转字符串: {{ reversedMessage }}</p>
    </div>
    
    <script>
    var vm = new Vue({
      el: '#app',
      data: {
        message: '糖果波!'
      },
      computed: {
        // 计算属性的 getter
        reversedMessage: function () {
          // `this` 指向 vm 实例
          return this.message.split('').reverse().join('')
        }
      }
    })
    </script>

    我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

     computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter

    下面例子通过getter获取数据,通过setter设置数据。

    <div id="app">
      <p>{{ site }}</p>
    </div>
    
    <script>
    var vm = new Vue({
      el: '#app',
      data: {
        name: 'AAA',
        description: 'BBBBBBBB'
      },
      computed: {
        site: {
          // getter
          get: function () {
            return this.name + ' ' + this.description
          },
          // setter
          set: function (newValue) {
            var names = newValue.split(' ')
            this.name = names[0]
            this.description = names[names.length - 1]
          }
        }
      }
    })
    // 调用 setter, vm.name 和 vm.url 也会被对应更新
    vm.site = '糖果波 女孩';
    document.write('name: ' + vm.name);
    document.write('<br>');
    document.write('description: ' + vm.description);
    </script>

    当setter生效时,原data属性也会发生改变。

    二、监听属性

    Vue.js 监听属性 watch,可以通过 watch 来响应数据的变化。

    下面例子通过点击事件监测点击次数。

    <div id = "app">
     <p style = "font-size:25px;">计数器: {{ counter }}</p>
     <button @click = "counter++" style = "font-size:25px;">点我</button>
    </div>
        <div id= "aa"></div>
    <script type = "text/javascript">
     var vm = new Vue({
        el: '#app',
        data: {
           counter: 1
        }
     });
     vm.$watch('counter', function(nval, oval) {
         document.getElementById("aa").innerHTML="<h3>计数器值的变化 :" + oval + " 变为 " + nval + "!</h3>";
     });
    </script>

    由此可以监听数据的变化,进行事件响应,并得到变化前的值和变化后的值。

  • 相关阅读:
    hdu-2841 Visible Trees---容斥定理
    hdu-4135 Co-prime---容斥定理经典&&求1-m中与n互质的数目
    hdu-1796 How many integers can you find---容斥定理
    hdu-2837 Calculation---指数循环节
    FZU-1759 Super A^B mod C---欧拉降幂&指数循环节
    指数循环节&欧拉降幂
    hdu-3074 Multiply game---线段树+单点更新
    hdu-1792 A New Change Problem---数论&剩余系
    POJ-2429 GCD & LCM Inverse---给出gcd和lcm求原来两个数
    hdu-2685 I won't tell you this is about number theory---gcd和快速幂的性质
  • 原文地址:https://www.cnblogs.com/tangguobo/p/10078298.html
Copyright © 2020-2023  润新知