三 .web框架-----------VUE语法使用(三)

一 .VUE使用   https://cn.vuejs.org/v2/guide/routing.html

1.Vue成员获取(挂载)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
  
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        {{a}}
    </div>
    <script>
        //vm.$el    ->  就是元素
        var vm=new Vue({
          el:'#box',
            data:{
                a:1
            }
        });

        //alert(vm.$el);
        vm.$el.style.background='red';
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        {{a}}
    </div>
    <script>
//      vm.$data  ->  就是data
        var vm=new Vue({
            el:'#box',
            data:{
                a:1
            }
        });

        console.log(vm.$data.a);
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        <span v-text="a"></span>
    </div>
    <script>
//      vm.$mount ->  手动挂在vue程序
        //angular.bootstrap
        /*var vm=new Vue({
            data:{
                a:1
            }
        });

        vm.$mount('#box'); //手动挂载*/

        var vm=new Vue({
            data:{
                a:1
            }
        }).$mount('#box');
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        <span v-text="a"></span>
        <br>
        {{aa}}
    </div>
    <script>
//vm.$options    ->   获取自定义属性
        var vm=new Vue({
            aa:114444, //自定义属性,
            show:function(){
                
                alert(1);
                
            },
            data:{
                a:"vm.$options    ->   获取自定义属性"
            }
        }).$mount('#box');

        vm.$options.show();
        
        console.log(vm.$options.aa);
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        <span v-text="a"></span>
    </div>
    <script>
// vm.$log();    ->  查看现在数据的状态
        var vm=new Vue({
            data:{
                a:33333333,
                b:44444444444
            }
        }).$mount('#box');

        console.log(vm.$log());
    </script>
</body>
</html>

 2. 计算属性computed

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        a => {{a}}
        <br>
        b => {{b}}
    </div>
    <script>
        //* computed里面可以放置一些业务逻辑代码,一定记得return
        var vm=new Vue({
            el:'#box',
            data:{
                a:1
            },
            computed:{
                b:function(){
                    //业务逻辑代码
                    return 2;
                }
            }
        });
        console.log(vm.a);
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        a => {{a}}
        <br>
        b => {{b}}
    </div>
    <script>
            //* computed里面可以放置一些业务逻辑代码,一定记得return
        vax',
            datar vm=new Vue({
            el:'#box:{
                a:1
            },
            computed:{
                b:function(){
                    //业务逻辑代码
                    return this.a+1;
                }
            }
        });

        document.onclick=function(){
            vm.a=101;
        };
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>

    </script>
</head>
<body>
    <div id="box">
        a => {{a}}
        <br>
        b => {{b}}
    </div>
    <script>
            //* computed里面可以放置一些业务逻辑代码,一定记得return
        var vm=new Vue({
            el:'#box',
            data:{
                a:1
            },
            computed:{
                b:{
                    get:function(){
                        return this.a+2;
                    },
                    set:function(val){
                        this.a=val;
                    }
                }
            }
        });

        document.onclick=function(){
            vm.b=45;
        };
    </script>
</body>
</html>
 
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--引入最新的vue稳定版本-->
       <script src="vue.js"></script>
</head>
<body>
<div id="app">
   总价:  {{ prices }}
</div>

<!--script脚本-->
<script>
    var app = new Vue({
        el: '#app',
        data: {
            package1: [
                {
                   "name":'iPhone7',
                    "price":5000,
                    "count": 1
                },
                {
                    "name":'ipad',
                    "price":1000,
                    "count": 1
                }
            ],
            package2: [
                {
                    "name":'apple',
                    "price":2000,
                    "count": 2
                },
                {
                    "name":'banana',
                    "price":2000,
                    "count": 2
                }
            ],
        },
        computed: {
            prices: function () {
                //this指向的是当前vue实例对象
                //计算总价
                var  prices=0;
                //遍历第一个
                for (var i=0;i<this.package1.length;i++ ) {
                    prices=prices+this.package1[i].price*this.package1[i].count;
                }
                //遍历第二个数组
                for (var i=0;i<this.package2.length;i++ ) {
                    prices=prices+this.package2[i].price*this.package2[i].count;
                }
                return prices;
            }
        }
    })
</script>
</body>
</html>

 3. $watch 监听数据变化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>


        window.onload=function(){
            var vm=new Vue({
                el:'#box',
                data:{
                    a:111,
                    b:2
                }
            });

            vm.$watch('a',function(){
//              alert('发生变化了');

                this.b=this.a+100;
            });

            document.onclick=function(){
                vm.a=1;
            };
        };

    </script>
</head>
<body>
    <div id="box">
        {{a}}
        <br>
        {{b}}
    </div>

</body>
</html>

 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>


        window.onload=function(){
            var vm=new Vue({
                el:'#box',
                data:{
                    json:{name:'strive',age:16},
                    b:2
                }
            });

            vm.$watch('json',function(){
                alert('发生变化了');
            });

            document.onclick=function(){
                vm.json.name='aaa';
            };
        };

    </script>
</head>
<body>
    <div id="box">
        {{json | json}}
        <br>
        {{b}}
    </div>

</body>
</html>
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>


        window.onload=function(){
            var vm=new Vue({
                el:'#box',
                data:{
                    json:{name:'strive',age:16},
                    b:2
                }
            });

            vm.$watch('json',function(){
                alert('发生变化了');
         },{deep:true});   //{deep:true})深度监视

            document.onclick=function(){
                vm.json.name='aaa';
            };
        };

    </script>
</head>
<body>
    <div id="box">
        {{json | json}}
        <br>
        {{b}}
    </div>

</body>
</html>
 

 4. 

原文地址:https://www.cnblogs.com/lovershowtime/p/11661748.html