vue 代码实例


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<div id="app">
    {{count}}
    <button @click="updateCount">clickMebutton>
    <hr>
    <hr>
    <h3 v-if="count<6" v-change="count">自定义指令h3>

div>
<script src="js/vue.min.js">script>
<script>
    //1.model
    var exampleData ={
        msg:"hello vue",
        count:0
    };
    //2.viewmodel
    new Vue({
        el:"#app",
        data:exampleData,
        methods:{
            updateCount:function(){
               this.count++;
            }
        },
        directives:{   //所有自定义指令保存在此对象中
            change:{   //自定义指令change
                bind:function(el,bindings){
                    console.log(el);
                    console.log(bindings);
                    console.log("初始化指令");
                },
                update:function(el,bindings){
                    console.log("指令发生变化");
                    console.log(bindings.value);
                },
                unbind:function(el,bindings){
                    console.log("解除绑定");
                }
            }
        }
    });
script>
body>
html>





<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<div id="app">
    {{msg}}
    <br>
    <button @click="color">clickMebutton>
    <h3 v-if="count<6" v-change-background-color="myBgcolor">自定义指令h3>

div>
<script src="js/vue.min.js">script>
<script>
    //1.model
    var exampleData ={
        msg:"hello vue",
        count:0,
       myBgcolor:"#ff0000"
    };
    //2.viewmodel
    new Vue({
        el:"#app",
        data:exampleData,
        methods:{
           color:function(){
               console.log(11);
               this.myBgcolor=this.getRandomColor();
           },
           getRandomColor:function(){
                var r=Math.floor(Math.random()*256);
                var g=Math.floor(Math.random()*256);
                var b=Math.floor(Math.random()*256);
                return `rgb(${r},${g},${b})`;
            }
        },
        directives:{   //所有自定义指令保存在此对象中
            changeBackgroundColor:{   //自定义指令change
                bind:function(el,bindings){  //el===h3
                    console.log("绑定成功");
                    el.style.backgroundColor = bindings.value;
                },
                //需要加更新的指令
                update:function(el,bindings){
                    el.style.backgroundColor = bindings.value;
                }
            }
        }
    });
script>
body>
html>



<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<div id="app">
    <h4>{{price}}h4>
    <h4>{{price | myCurrency('¥')}}h4>
    <h4>{{price | myCurrency('$')}}h4>

div>
<script src="js/vue.min.js">script>
<script>
    //1.model
    var exampleData ={
        msg:"hello vue",
        price:356
    };
    //2.viewmodel
    new Vue({
        el: "#app",
        data: exampleData,
        filters:{   //所有的过滤器定义在此处
            myCurrency:function(myInput,arg1){
                //参数myInput:price--过滤器前的变量值; arg1:¥
                var result=arg1+myInput;
                return result;


            }

        }
    });
script>
body>
html>



<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<div id="app">
    <h4>{{text}}h4>
    <h4>{{text | myTextTransform(true)}}h4>
    <h4>{{text | myTextTransform(false)}}h4>

div>
<script src="js/vue.min.js">script>
<script>
    //1.model
    var exampleData ={
        msg:"hello vue",
        text:"hello moto"
    };
    //2.viewmodel
    new Vue({
        el: "#app",
        data: exampleData,
        filters:{   //所有的过滤器定义在此处
            myTextTransform:function(myInput,arg1){
      //参数myInput:price--过滤器前的变量值==  |的值; arg1:¥
                if(arg1==true){
                    var result=myInput.toUpperCase();
                    return result;
                }else if (arg1==false){
                    var result=myInput.toLowerCase();
                    return result;
                }

            }

        }
    });
script>
body>
html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<div id="app">
    <h3>自定义组件h3>
    <hr>
  
    <my-component>my-component>
div>
<script src="js/vue.min.js">script>
<script>
    //创建组件
    Vue.component("my-component",{//模板
       template:`
<h1>第一个组件h1> <h4>第一个h4> div>` }); //1.model var exampleData ={ msg:"hello vue", }; //2.viewmodel new Vue({ el: "#app", data: exampleData, }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Titletitle> head> <body> <div id="app"> <button @click="isShow=!isShow">切换组件是否显示button> <my-component v-if="isShow">my-component> div> <script src="js/vue.min.js">script> <script> //组件声明周期 Vue.component('my-component',{ template:`
<button @click="handleClick">clickMebutton> <h4>Hello {{count}}</h4> div> `, data:function () { return {count:0} }, methods:{ handleClick:function () { //console.log('111'); this.count ++; // console.log(this.count); } }, beforeCreate:function(){console.log("1:创建前")}, created:function(){console.log("2:创建后")}, beforeMount:function(){console.log("3:挂在前")}, mounted:function(){console.log("4:挂载后")}, beforeUpdate:function(){console.log("5:更新前")}, updated:function(){console.log("6:更新后")}, beforeDestroy:function(){console.log("7:销毁前")}, destroyed:function(){console.log("8:销毁后")}, }); var exampleData = { msg:'hello vue', isShow:true }; new Vue({ el:'#app', data:exampleData }); script> body> html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<h3>自定义组件h3>
<hr>
<div id="app">
    
    <my-component>my-component>
div>
<script src="js/vue.min.js">script>
<script>
    //创建组件 my_component
    //组件两个数据--myAddress  ;myPhone
    //添加模板
    //div_  添加两个input,input的value绑定刚才定义
    Vue.component("my-component",{
        data:function(){
            return{
                myAddress:"",
                myPhone:158
            }
        },
        template:`
<input type="text" v-model="myAddress"> <input type="text" v-model="myPhone"> <h5>{{myAddress}}</h5>
{{myPhone}}</h5> div> `, watch:{//监听事件 myAddress:function(){ console.log("数据发生改变:"+this.myAddress); }, myPhone:function(){ console.log("数据发生改变"+this.myPhone); } } }); //1.model var exampleData ={ msg:"hello vue", }; //2.viewmodel new Vue({ el: "#app", data: exampleData, }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Titletitle> head> <body> <div id="app"> <my-game>my-game> div> <script src="js/vue.min.js">script> <script> //练习:透明度变化组件 Vue.component("my-game",{ data:function(){ return { randomNumber:0, //中奖数 userInput:0, //用户输入 result:'' } }, mounted:function(){ //console.log("3:挂在前"); //创建中奖数1-100整数,并保存randomNumber var num=Math.floor(Math.random()*20); this.randomNumber=num; }, template:`
<input type="text" v-model="userInput"/> <br> <p>{{result}}</p> div> `, watch:{ userInput:function(){ //console.log(this.userInput); if(this.userInput>this.randomNumber){ this.result="大了"; }else if(this.userInput<this.randomNumber){ this.result="小了"; }else{ this.result="厉害了"; } } } }); var exampleData = { msg:'hello vue', isShow:true }; new Vue({ el:'#app', data:exampleData }); script> body> html>

父子组件


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<div id="app">
    <parent>parent>
div>
<script src="js/vue.min.js">script>
<script>
    //1.创建父组件
    Vue.component("parent",{
        data:function(){
            return {money:3000}
        },
        template:`
            
<h4>父组件h4> <child :myValue="money">child:mychild> div> ` }); //2.创建子组件 Vue.component("child",{ template:`<div><h3>子组件{{myValue}}</h3>div>`, props:["myValue"],//声明变量 保存父组件的数据 mounted:function(){ //声明变量结束,获取父元素数据 //已保存 this.data console.log(this.myValue); } }); //3.创建Vue new Vue({ el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> head> <body> <div id="app"> <parent>parent> div> <script src="js/vue.min.js">script> <script> Vue.component("parent",{ data:function(){ return {myCar:"QQ"} }, template:`
<child :car="myCar">child>div> ` }); Vue.component("child",{ props:["car"], template:`<div>{{car}}: <input type="text" :value="car"> div>`, mounted:function(){ console.log(this.car);} }); new Vue({ el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> head> <body> <div id="app"> <parent>parent> div> <script src="js/vue.min.js">script> <script> Vue.component("parent",{ methods:{ //1.1创建一个方法接收子组件传递的数据 getData:function(msg){ console.log("父组件接收子组件的数据:"+msg); } }, template:`
<h4>父组件h4> <child @dataEvent="getData">child> div> ` }); Vue.component("child",{ methods:{ setData:function(){ //触发绑定自定义事件dataEvent并且传递的数据 this.$emit("dataEvent","交话费"); } }, template:` <div> <h4>子组件h4> <button @click="setData">点击按钮发送数据给父组件button> div> ` }); new Vue({ el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> head> <body> <div id="app"> <parent>parent> div> <script src="js/vue.min.js">script> <script> //父 Vue.component("parent",{ data:function(){ return {isUserLogin:true,list:[10,20,30,40,50]} }, template:`
<ul v-if="isUserLogin"> <li v-for="item in list" >{{item}}</li> ul> <child @dataEvent="getData">child> div> `, methods:{ getData:function(msg){ console.log("父组件接收子组件的数据:"+msg); this.isUserLogin=msg; } } }); //子 Vue.component("child",{ template:` <div><button @click="sendData">点击按钮发送数据给父组件button>div> `, methods:{ sendData:function(){ if(this.$parent.isUserLogin){ this.$emit("dataEvent",false); }else{ this.$emit("dataEvent",true); } } } }); new Vue({ el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> head> <body> <div id="app"> <parent>parent> div> <script src="js/vue.min.js">script> <script> //父组件 Vue.component("parent",{ data:function(){ return {name:"牛魔王"} }, template:`
<h4>父组件h4><child ref="mySon">child> <button @click="getData">获取子组件button> div>`, methods:{ getData:function(){ console.log("子组件名称:"+this.$refs.mySon.name); } } }); //子组件 Vue.component("child",{ data:function(){ return {name:"红孩儿"} }, mounted:function(){ console.log("父元素的数据:"+this.$parent.name); } }); new Vue({ el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> head> <body> <div id="app"> <parent>parent> div> <script src="js/vue.min.js">script> <script> Vue.component("parent",{ data:function(){ return {name:["tom","jerry","kk"]} }, template:`
<ul > <li v-for="item in name">{{item}}</li> ul> <child>child> div> ` }); Vue.component("child",{ data:function(){ return {userName:""} }, template:` <div> {{userName}} "text" value="" v-model="userName"> <button @click="setData">添加button> div> `, methods:{ setData:function(){ //将用户名添加到父元素列表 var uname=this.userName; this.$parent.name.push(uname); //之后清空 this.userName=""; } } }); new Vue({ el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> head> <body> <div id="app"> <xiong-da>xiong-da> <xiong-er>xiong-er> div> <script src="js/vue.min.js">script> <script> //1.创建公共 Vue对象 var bus=new Vue(); //2.创建组件 xiong-er Vue.component("xiong-er",{ template:`
<h4>熊二接收数据h4> <h2>熊二发消息h2> <button @click="setData">熊二后发送button> div> `, methods:{ setData:function(){ bus.$emit("eventEr","光头强走了!!!") } }, mounted:function(){ bus.$on("cutomeEvent",function(msg){ console.log("熊大发来的消息:"+msg); }) } }); //3.创建组件 xiong-da Vue.component("xiong-da",{ template:`<div> <h2>熊大接收数据h2> <h4>熊大发数据h4> <button @click="setData">发送button> div>`, methods:{ setData:function(){ bus.$emit("cutomeEvent","光头强又来啦"); } }, mounted:function(){ bus.$on("eventEr",function(msg){ console.log("熊二发来的消息:"+msg); }) } }); //4.创建Vue new Vue({ el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> head> <body> <div id="app"> <my-main>my-main> div> <script src="js/vue.min.js">script> <script> Vue.component("my-main",{ data:function(){ return {count:0, isValid:false} }, template:`
<h4>父组件h4> <button @click="addCount" :disabled="isValid">count++button> <son :myCount="count">son> <hr> div>`, methods:{ addCount:function(){ this.count++; } } }); Vue.component("son",{ template:`<div> <h4>子组件h4> <p>接收数据:{{myCount}}</p> div>`, props:["myCount"], //绑定生命周期方法:更新-->如果数据发生变化自动执行 updated:function(){ //console.log("子组件变化"); console.log(this.myCount); if(this.myCount>10){//数据超过10 this.$parent.isValid=true;//禁用父组件按钮 } } }); new Vue({el:"#app"}); script> body> html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
    <div id="app">
        
        <router-view>router-view>
    div>
    <script src="js/vue.min.js">script>
    
    <script src="js/vue-router.js">script>
    <script>
        //3.组件多个组件
        var testLogin=Vue.component("login",{
            template:`
                
<h1>这是登录页面h1> div> ` }); var testRegister=Vue.component("register",{ template:` <div> <h1>这是注册页面h1> div> ` }); //4.配置路由词典 //语法:请求路径 对应组件 //{path:"/login",component:testLogin} const myRoutes=[ {path:"",component:testLogin}, {path:"/login",component:testLogin}, {path:"/reg",component:testRegister} ]; //5.创建路由对象 const myRouter=new VueRouter({ routes:myRoutes }); //6.创建Vue对象,并且指定路由对象 new Vue({ router:myRouter, el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> <style> div{width:200px; height:400px} #d{background: deepskyblue} #c{ background: greenyellow} #o{background: mediumvioletred} style> head> <body> <div id="app"> <router-view>router-view> div> <script src="js/vue.min.js">script> <script src="js/vue-router.js">script> <script> var testCollect=Vue.component("collect",{ template:`
"c"> <h4>收藏页面h4> <router-link to="/detail">详情页面router-link> <router-link to="/order">订单页面router-link> div> ` }); var testDetail=Vue.component("detail",{ template:` <div id="d"> <h4>详情页面h4> <router-link to="/order">查看订单页面router-link> <router-link to="/collect">查看收藏页面router-link> div> ` }); var testOrder=Vue.component("order",{ template:` <div id="o"> <h4>订单页面h4> <button @click="jumpToCollect">返回收藏button> <button @click="jumpToDetail">返回详情button> div> `, methods:{ jumpToCollect:function(){ //通过js的方式,实现导航到指定的路由地址对应的组件 this.$router.push("/collect"); }, jumpToDetail:function(){ //通过js的方式,实现导航到指定的路由地址对应的组件 this.$router.push("/detail"); } } }); const myRoutes=[ {path:"",component:testCollect}, {path:"/collect",component:testCollect}, {path:"/detail",component:testDetail}, {path:"/order",component:testOrder} ]; //5.创建路由对象 const myRouter=new VueRouter({ //路由对象里,引用要使用的路由词典 routes:myRoutes }); //6.创建Vue对象,并且指定路由对象 new Vue({ router:myRouter, el:"#app" }); script> body> html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
    <style>
        div{width:300px;  height:400px}
        #l{background: cornflowerblue; color: aliceblue}
        #d{background: lightseagreen; color: greenyellow}
    style>
head>
<body>
<div id="app">
    
    <router-view>router-view>
div>
<script src="js/vue.min.js">script>

<script src="js/vue-router.js">script>
<script>
    //3.组件多个组件
    //接收参数
    var productDetail=Vue.component("product-detail",{
        data:function(){
          return {productId:0}//接收上一个组件传来的参数
        },
        template:`
            
"d"> <h2>{{productId}}</h2> ">返回list
`, mounted:function(){ this.productId= this.$route.params.pid; console.log(this.$route.params); } }); //发送参数 var productList=Vue.component("
product-list",{ data:function(){ return {list:["aaa","bbb","ccc","ddd","eee"]} }, template:`
">

产品列表

  • in list"> '/detail/'+idx">{{item}}</router-link> li><br> <button @click="toDetail">进入详情页button> ul> div> `, methods:{ toDetail:function(){ this.$router.push("/detail/"+this.list); } } }); var NotFound =Vue.component("my-found",{ template:`<div class="base"> <h1> 404 Page Not Founth1> <router-link to="/login">返回首页router-link> div>` }); //4.配置路由词典 const myRoutes=[ {path:"",component:productList}, {path:"/list",component:productList,alias:"/lists"}, {path:"/mylist",redirect:"/list"}, {path:"/detail/:pid",component:productDetail}, {path:"*",component:NotFound} ]; //5.创建路由对象 const myRouter=new VueRouter({ routes:myRoutes }); //6.创建Vue对象,并且指定路由对象 new Vue({ router:myRouter, el:"#app" }); script> body> html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title> <style> div{width:300px; height:400px} #l{background: cornflowerblue; color: aliceblue} #m{background: lightseagreen; color: greenyellow} style> head> <body> <div id="app"> <router-view>router-view> div> <script src="js/vue.min.js">script> <script src="js/vue-router.js">script> <script> //3.组件多个组件login/main/inbox/outbox var myLogin=Vue.component("my-login",{ template:`
    "l"> <h4>登录组件h4> <router-link to="/main">跳到主页面router-link> div> ` }); var myMain=Vue.component("my-main",{ template:` <div id="m"> <h3>邮箱主页面h3> <ul> <li><router-link to="/inbox">收件箱router-link>li> <li><router-link to="/outbox">发件箱router-link>li> ul> <router-view>router-view> div> ` }); var myInbox=Vue.component("my-inbox",{ template:` <div id="m"> <ul> <li>未读邮件1li> <li>未读邮件2li> <li>未读邮件3li> <li>未读邮件4li> ul> div> ` }); var myOutbox=Vue.component("my-outbox",{ template:` <div id="m"> <ul> <li>已发邮件1li> <li>已发邮件2li> <li>已发邮件3li> <li>已发邮件4li> ul> div> ` }); //4.配置路由词典 const myRoutes=[ {path:"",redirect:"/login"}, {path:"/login",component:myLogin}, {path:"/main",component:myMain, children:[ {path:"/inbox",component:myInbox}, {path:"/outbox",component:myOutbox}, ] }, ]; //5.创建路由对象 const myRouter=new VueRouter({ routes:myRoutes }); //6.创建Vue对象,并且指定路由对象 new Vue({ router:myRouter, el:"#app" }); script> body> html>

你可能感兴趣的:(Vue)