zoukankan      html  css  js  c++  java
  • vue----计算与监听属性

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue--计算/监听属性</title>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    </head>

    <body>
    <!-- 计算关键字computed。-->
    <div id="app">
    <p>原始字符串:{{message}}</p>
    {{ message.split('').reverse().join('') }}<!--reverse倒退-->
    <p>计算后的字符串:{{reversedMessage}}</p>
    </div>




    <!--conputed setter-->
    <div id="setter">
    <p>{{site}}</p>
    </div>




    <div id="methodcom">
    <p>原始字符串: {{ message }}</p>
    <p>计算后反转字符串: {{ reversedMessage }}</p>
    <p>计算后反转字符串: {{ reversedMessage }}</p>
    <p>使用方法后反转字符串: {{ reversedMessage2() }}</p>
    <p>使用方法后反转字符串: {{ reversedMessage2() }}</p>
    </div>


    <div id = "computed_props">
    千米 : <input type = "text" v-model = "kilometers">
    米 : <input type = "text" v-model = "meters">
    </div>
    <p id="info"></p>

    </body>
    <script type = "text/javascript">
    <!--watch监听-->
    var vm = new Vue({
    el: '#computed_props',
    data: {
    kilometers : 0,
    meters:0
    },
    methods: {
    },
    computed :{
    },
    watch : {
    kilometers:function(val) {
    this.kilometers = val;
    this.meters = this.kilometers * 1000
    },
    meters : function (val) {
    this.kilometers = val/ 1000;
    this.meters = val;
    }
    }
    });
    // $watch 是一个实例方法
    vm.$watch('kilometers', function (newValue, oldValue) {
    // 这个回调将在 vm.kilometers 改变后调用
    document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
    })
    </script>


    <script>
    <!--computed与method比较-->
    var cnt=1;
    var vm = new Vue({
    el: '#methodcom',
    data: {
    message: 'Runoob!'
    },
    computed: {
    // 计算属性的 getter
    reversedMessage: function () {
    // `this` 指向 vm 实例
    cnt+=1;
    return cnt+this.message.split('').reverse().join('')
    }
    },
    methods: {
    reversedMessage2: function () {
    cnt+=1;
    return cnt+this.message.split('').reverse().join('')
    }
    }
    })
    </script>


    <script>
    var vm = new Vue({
    el:'#setter',
    data:{
    name:'baidu',
    url:'www.baidu.com'
    },
    computed:{
    site:{
    get:function(){
    return this.name+''+ this.url
    },
    set:function(newVal){
    var names=newVal.split(' ')
    this.name=names[0]
    this.url=names[names.length-1]
    }
    }
    }
    })

    <!--从实例运行结果看在运行 vm.site = '菜鸟教程 http://www.runoob.com'; 时,-->
    <!--setter 会被调用, vm.name 和 vm.url 也会被对应更新。-->
    vm.site='xzcvsda http://www.360.com';
    document.write('name:'+vm.name);
    document.write('<br>');
    document.write('url'+vm.url);
    </script>


    <script>
    <!--提供的函数将用作属性 vm.reversedMessage 的 getter 。-->
    <!--vm.reversedMessage 依赖于 vm.message,在 vm.message 发生改变时,vm.reversedMessage 也会更新。-->
    new Vue({
    el:'#app',
    data:{
    message:"race"
    },
    computed:{
    reversedMessage:function(){
    return this.message.split('').reverse().join('')
    }
    }
    <!--我们可以使用 methods 来替代 computed,效果上两个都是一样的,-->
    <!--但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。-->
    <!--而使用 methods ,在重新渲染的时候,函数总会重新调用执行。-->
    })
    </script>

    </html>

  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/cxiang/p/10551949.html
Copyright © 2011-2022 走看看