• 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>

  • 相关阅读:
    博客索引
    【转载】学习顺序:顶级会议 ----> 顶级期刊 ------> 基础教材(博客) / 论文复现
    【神游篇00】关于自己的日常学习记录
    【1】ML简介
    【2】Neural Network学习
    【1】NNDL简介
    【1】Deep Learning简介
    【1】PRML简介
    【1】BRML简介
    图集压缩,,命令行工具
  • 原文地址:https://www.cnblogs.com/cxiang/p/10551949.html
Copyright © 2020-2023  润新知