zoukankan      html  css  js  c++  java
  • vue的响应接口

    Vue 可以添加数据动态响应接口。

    例如以下实例,我们通过使用 $watch 属性来实现数据的监听,$watch 必须添加在 Vue 实例之外才能实现正确的响应。

    实例中通过点击按钮自动加 1。setTimeout 设置两秒后计算器的值加上 20 。

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

      

    Vue 不允许在已经创建的实例上动态添加新的根级响应式属性。

    Vue 不能检测到对象属性的添加或删除,最好的方式就是在初始化实例前声明根级响应式属性,哪怕只是一个空值。

    如果我们需要在运行过程中实现属性的添加或删除,则可以使用全局 Vue,Vue.set 和 Vue.delete 方法

    Vue.set

    Vue.set 方法用于设置对象的属性,它可以解决 Vue 无法检测添加属性的限制,语法格式如下:

    Vue.set( target, key, value )

    参数说明:

    • target: 可以是对象或数组
    • key : 可以是字符串或数字
    • value: 可以是任何类型
    <div id = "app">
    <p style = "font-size:25px;">计数器: {{ products.id }}</p>
    <button @click = "products.id++" style = "font-size:25px;">点我</button>
    </div>
    <script type = "text/javascript">
    var myproduct = {"id":1, name:"book", "price":"20.00"};
    var vm = new Vue({
       el: '#app',
       data: {
          counter: 1,
          products: myproduct
       }
    });
    Vue.set(myproduct, 'qty', 1);
    console.log(vm);
    vm.$watch('counter', function(nval, oval) {
       alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!');
    });
    </script>

    Vue.delete

    Vue.delete 用于删除动态添加的属性 语法格式:

    Vue.delete( target, key )

    参数说明:

    • target: 可以是对象或数组
    • key : 可以是字符串或数字
      <div id = "app">
         <p style = "font-size:25px;">计数器: {{ products.id }}</p>
         <button @click = "products.id++" style = "font-size:25px;">点我</button>
      </div>
      <script type = "text/javascript">
      var myproduct = {"id":1, name:"book", "price":"20.00"};
      var vm = new Vue({
         el: '#app',
         data: {
            counter: 1,
            products: myproduct
         }
      });
      Vue.delete(myproduct, 'price');
      console.log(vm);
      vm.$watch('counter', function(nval, oval) {
         alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!');
      });
      </script>
  • 相关阅读:
    redhat 找不到eth0等网卡设备
    oracle12.2 windows 安装卸载重新学习
    Ubuntu官方推荐U盘镜像写入工具(转载别人的)
    linux sh 脚本获取命令结果变变量然后post
    img图片过长自动截取隐藏
    python 数字类型
    Pycharm 常用快捷键 转自 暮良文王
    #python输入输出
    勤学如春起之苗,不见其增日有所长。缀学如磨刀之石,不见其损日有所亏
    感冒了,好难受
  • 原文地址:https://www.cnblogs.com/zhouyideboke/p/9585347.html
Copyright © 2011-2022 走看看