vue的第一节课

157 阅读1分钟

Vue是单页面应用

v-on:click 简写 @click fn可以加括号 也可以不加

<h1 @click="fn('我爱vue')">{{msg}}</h1>

{{}}里面还可以写表达式

<h1>{{msg.substring(0,4)}}</h1>

vue的条件判断v-if后面支持变量 也支持直接写布尔值

点击 输入你的爱好 如果你输入的是java 页面显示 我爱学习java 输入js 我爱学习js '' 显示

 <!-- <button @click="fn2">点我</button>
    <h1 v-if="str1=='java'">我爱学习java</h1>
    <h1 v-else-if="str1=='js'">我爱学习javaScript</h1>
    <h1 v-else>我什么都不爱学</h1> -->

属性想使用动态变量需要加上v-bind v-bind可以简写成:

 <!-- @click可以直接写js表达式 -->
    <!-- class 对象里面的key表示类名 -->
    <!-- style 对象里面的key表示属性名 -->
    <!-- <h1 :class="{red:flag1,'font-size':flag1}" @click="flag1=!flag1">中国人不骗中国人</h1>
    <h1 :style="{color:flag1?'red':'','font-size':flag1?'60px':''}" @click="flag1=!flag1">中国人就骗中国人</h1> -->

v-for 循环 里面有两项 item表示数组的每一项 index表示数组的索引 循环的时候需要加key key最好时候对象里面的属性 如果没有再使用index

    <ul>
        <li 
            v-for="(item,index) in arr" 
            v-bind:key="item.id" 
            @click="choose(index)"
            :style="{color:item.flag?'red':''}"
        >{{item.title}} --- {{item.id}}</li>
    </ul>
new Vue({
            /* 挂载点 */
            el: "#app",
            /* 数据 */
            data: {
                arr: [{
                    id:0,
                    title:"一天某女子深夜造访涛涛",
                    flag:true,
                },{
                    id:1,
                    title:"一天某女子深夜造访正见",
                    flag:false,
                },{
                    id:2,
                    title:"一天某小学生深夜玩王者荣耀",
                    flag:false,
                }],
                flag1: false,
                msg: "欢迎大家正式进入Vue的学习",
                flag: false,
                str1: ''
            },
            /* 定义方法的地方 */
            methods: {
                choose:function(index){
                    /* 排他 */
                    this.arr.forEach(r=>{r.flag=false});
                    /* 把当前索引对象的flag改成true */
                    this.arr[index].flag = true;
                },
                fn2: function () {
                    let str = window.prompt('选择你喜欢的编程');
                    if (str == 'java') {
                        /* 使用this.给data中的数据赋值 */
                        this.str1 = 'java'
                    } else if (str == 'js') {
                        this.str1 = 'js'
                    }
                },
                fn: function (str) {
                    alert(str)
                }
            },
        })

<body>
    <div id="app">
        <!-- <input type="text" :value="str" @input="change"> -->
        <!-- v-model就类似于上面的写法 是一种语法糖 来实现双向数据绑定-->
        <!-- @keyup后面可以接修饰符 .enter .keyCode值  -->
        <input type="text" v-model="str" @keyup.13="keyFn">
        <h1>{{str}}</h1>
        <!-- 输入email 和 密码 按enter有校验 首先是非空 email必须要含有@和.    
            按enter可以alert出 邮箱加密码 -->
    </div>
    <script src="./node_modules/vue/dist/vue.min.js"></script>
    <script>
        new Vue({
            el:"#app",
            data:{
                str:'我爱Vue'
            },
            methods: {
                // change:function(e){
                //     let event = e||event;
                //     this.str = event.target.value;
                // },
                keyFn(e){
                    // let event = e||event;
                    // if(event.keyCode==13){
                    //     alert(this.str)
                    // }
                    alert(this.str)
                }
            },
        })
    </script>
</body>

<body>
    <div id="app">
        <p>
            邮箱:<input type="text" v-model="user">
        </p>
        <p>
            密码:<input type="text" v-model="pwd" type="password">
        </p>
        <button @click="submit">提交</button>
    </div>
    <script src="./node_modules/vue/dist/vue.min.js"></script>
    <script>
        new Vue({
            el:"#app",
            data:{
                user:'',
                pwd:''
            },
            methods: {
                submit(){
                    if(!this.user.trim()||!this.pwd.trim()){
                        alert('邮箱或密码不能为空')
                        return
                    }
                    if(this.user.indexOf('@')==-1||this.user.indexOf('.')==-1){
                        alert('邮箱必须含有@和.')
                        return
                    }
                    alert(`您的邮箱是${this.user},您的密码是${this.pwd}`)
                }
            },
        })
    </script>
</body>