zoukankan      html  css  js  c++  java
  • Vue入门2

    1.计算属性

         computed:{  定义方法,该方法必须有返回值}

    <div id="app">
    <!--计算属性-->
        <div>{{birth1}}</div>
    </div>
    //计算属性的方法必须有返回值<script>
    <!--初始化一个vue实例-->
        const app =new Vue({
            el: "#app",
            data: {
           
                birthday:1529032123201,
          
            },
            //计算属性的方法必须有返回值
            computed:{
                birth1: function () {
                    const date=new Date(this.birthday);
                    return date.getFullYear()+""+date.getMonth()+""+date.getDay();
                }
            }
    
        })
    </script>

    2.监听:watch  

    <div id="#app">
     <input type="text" v-model="search">
    </div>
    <script>
    <!--初始化一个vue实例-->
        const app =new Vue({
            el: "#app",
            data: {
                search:""
            },
            watch:{
                search(newVal,oldVal){
                    console.log(newVal,oldVal);
                }
            }
        })
    </script>

    3.组件

       3.1.全局组件

    <div id="app">
         <counter></counter>
    </div>
    
    <script>
    //子组件
    //counter 为组件名 Vue.component("counter",{ //template 模板 template: "<button @click='num++'>点我加一,{{num}}</button>", data(){ return { num:0 } } })
      //父组件
    new Vue({ 
    el:
    "#app",
    })
    </script>

        3.2.局部组件

           

    <div id="app">
        <hello1></hello1>
    </div>
    </body>
    <script src="node_modules/vue/dist/vue.js"></script>
    <script>
     //局部组件,子组件,名为hello
          const hello={
              template: "<div>打个招呼,我是{{name}}</div>",
              data(){
                  return {
                      name: "刘德华"
                  }
              },
          }
    //父组件
         new Vue({
             el: "#app",
    components:{
    //使用子组件: 键值对形式: 组件名 : 子组件名 hello1:hello } })
    </script>

            3.3.父子传递

        1)  父向子传递数据(num)

           父组件在调用子组件(counter)时自定义属性(num1)(属性名任意,属性值为要传递的数据(num),动态),子组件通过props接收父组件的数据

      2)子向父传递方法(incr())

        父组件在调用子组件(counter)时自定义事件(@incr1)

       (事件名任意,里面的方法名未要传递的方法名),

        再在子组件里定义点击事件方法(subIncr),

      在subIncr方法中调用父传来的方法:this.$emit("事件名incr1")

         

    <body>
    <div id="app">

    <!--调用子组件,自定义属性,属性名任意,属性值为要传递的数据
    自定义事件,方法
    -->
    <counter :num1="num" @incr1="incr()"></counter> </div> </body> <script> //父向子传递 //父组件使用子组件时,自定义属性或者事件(属性名和事件名任意,属性值为要传递的数据),子组件通过props接收父组件的数据 Vue.component("counter",{ // template: "<button @click='num1++'>点我加一,{{num1}}</button><br>" + template: "<button @click='subIncr'>点我加一,{{num1}}</button>", //props:["num1"] props:{ num1:{ type:Number, default:0, } }, methods:{ subIncr(){ this.$emit("incr1"); //子调用父组件方法this.$emit(父组件事件名) } } }) new Vue({ el: "#app", data:{ num:0 }, methods:{ incr(){ this.num++ } } }) </script>

           3.4.路由:vue-router

             1)安装:使用npm安装  npm install vue-router  --save

             2) 引入<script src="../node_modules/vue-router/dist/vue-router.js"></script>

    
    
    <div id="app">
        <span><router-link to="/login">登陆</router-link></span>
        <span><router-link to="/register">注册</router-link></span>
        <hr>
    <!--    锚点,组件渲染的地方-->
          <router-view></router-view>
    <!--    <login-form></login-form>-->
    <!--    <register-form></register-form>-->
    </div>
    </body>
    <script src="../node_modules/vue/dist/vue.js"></script>
    <script src="../node_modules/vue-router/dist/vue-router.js"></script>
    <script src="js/login.js"></script>
    <script src="js/register.js"></script>
    <script>
    
        const router=new VueRouter({
            routes:[
                {
                    path: "/login", //路由路径,通常以”/“开头
                    component: loginForm
                },
                {
                    path: "/register",
                    component:registerForm
                }
            ]
        })
        new Vue({
            el:"#app",
            // components:{
            //     loginForm,
            //     registerForm
            // },
            router
        })
    </script>
    
    
    
    
    
    
    //子组件 loginForm
    const loginForm={
        //组件内的template只能有一个根标签
        template:`         
          <div>
            <h1>登陆页</h1>
            用户名: <input type="text"><br>&emsp;码: <input type="password"><br> 
            <input type="button" value="登陆">
          </div>
        `
    }
    
    //子组件 register
    const registerForm={
        template:`
          <div>
            <h1>注册页</h1>&ensp;&ensp;名: <input type="text"><br>&emsp;&emsp;码: <input type="password"> <br>
            确认密码: <input type="password"> <br>
            <input type="button" value="注册">
          </div>
        `
    }
  • 相关阅读:
    UnxUtils让windows下的dos命令变为linux下的命令
    Python多线程&进程
    Web前端工程师-优秀简历汇总
    最详细的Vuex教程
    Vue2.0 探索之路——生命周期和钩子函数的一些理解
    理解 $nextTick 的作用
    使用git rebase合并多次commit
    vim 退出命令(保存、放弃保存)
    Vue获取DOM元素样式 && 样式更改
    Vue Router的配置
  • 原文地址:https://www.cnblogs.com/cqyp/p/12843322.html
Copyright © 2011-2022 走看看