vue.js简单小案例

一、Vue.js实现点击自增

点击事件:v-on
缩写:@
预期:Function | Inline Statement | Object
参数:event
修饰符:
.stop - 调用 event.stopPropagation()。
.prevent - 调用 event.preventDefault()。
.capture - 添加事件侦听器时使用 capture 模式。
.self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
.{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
.native - 监听组件根元素的原生事件。
.once - 只触发一次回调。
.left - (2.2.0) 只当点击鼠标左键时触发。
.right - (2.2.0) 只当点击鼠标右键时触发。
.middle - (2.2.0) 只当点击鼠标中键时触发。
.passive - (2.3.0) 以 { passive: true } 模式添加侦听器

用法:
绑定事件监听器。事件类型由参数指定。表达式可以是一个方法的名字或一个内联语句,如果没有修饰符也可以省略。
用在普通元素上时,只能监听原生 DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件。
在监听原生DOM事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个event属性:v-on:click=”handle(‘ok’, $event)”。从 2.4.0 开始,v-on 同样支持不带参数绑定一个事件/监听器键值对的对象。注意当使用对象语法时,是不支持任何修饰器的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id = "app">
        <input type="text" v-model="number">
        <button v-on:click="handerIncrease()">点击+1</button>
    </div>
    <script src = "https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script>
        new Vue({
            el :"#app",
            data:{
                number:'1'
            },
            methods:{
                handerIncrease:function(){
                    this.number++
                }
            }
        })
    </script>
</body>
</html>

效果图:
这里写图片描述

二、购物车商品的简单计算

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <div>
        商品价格:<input type="number" v-model = "price"><br>
        商品数量:<button v-on:click = "count--">-</button>{{ count }}<button v-on:click = "count++">+</button><br>
        总价格:<span>{{ price * count }}</span>
        </div>
    </div>
    <script src = "https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script>
        new Vue({
            el:'#app',
            data:{
                price:'5',
                count:'1'

            }
        })

    </script>
</body>
</html>

效果图:
这里写图片描述

三、实现简单的加减乘除运算

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="number" v-model = "input1">
        <select  v-model="selected">
            <option value="0">+</option>
            <option value="1">-</option>
            <option value="2">*</option>
            <option value="3">/</option>
        </select>
        <input type="number" v-model = "input2">
        <button v-on:click="onclick">=</button>
        <span>{{ sum }}</span>
    </div>
    <script src = "https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                selected:'',
                input1:'',
                input2:'',
                sum:''
            },
            methods:{
                onclick(){
                    if(this.selected=='0'){  
                    this.sum=(this.input1-0)+ (this.input2-0)  
                }  
                    if(this.selected=='1'){  
                    this.sum=eval(this.input1- this.input2)
                }  
                    if(this.selected=='2'){  
                    this.sum=eval(this.input1* this.input2)  
                }  
                    if(this.selected=='3'){  
                    this.sum=eval(this.input1/this.input2)  
                } 

                }
            }
        })
    </script>

</body>
</html>

效果图:
这里写图片描述

四、简记所要做的事情(TODO)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .done{
            text-decoration: line-through;
            color:#ccc;
        }
    </style>
</head>
<body>
    <div id="app">
        <h1>ToDo</h1>
        <p>{{todos.filter(item=>!item.done).length}}of {{todos.length}} remaining [archive]</p>
        <p v-for="(item,index) in todos">
            <!--
                checkbox:双向绑定了item.done,
                当CheckBox改变的时候,会影响数据 item.done 也跟着改变
                当 item.done 改变的时候,会影响所有使用了这个 item.done 的绑定
            -->
            <input type="checkbox" v-model="item.done">
            <!--
                v-bind:可用来动态的绑定属性值,class给了一个对象:
                对象的key就是类名,对象的value是布尔值
                当布尔值为true的时候,作用这个key样式
                当布尔值为false的时候,去除这个key样式
            -->
            <span v-bind:class = "{done:item.done}">{{item.title}}</span>
            <button @click = "handleremovetodoclick(index)">删除</button>
        </p>
        <input type="text" v-model="todoText" @keydown.enter="handerIncrease">
        <button v-on:click="handerIncrease">Add</button>

    </div>
    <script src="node_modules/vue/dist/vue.js"></script>
    <script>
        const todos = [
                {id:1,
                title:'吃饭',
                done:true},

                {id:2,
                title:'睡觉',
                done:false},

                {id:3,
                title:'写代码',
                done:true},
        ]
        const app = new Vue({
            el:'#app',
            data:{
                todos,
                todoText:''

            },
            methods:{
                handerIncrease(){
                    //console.log('hander click')
                    //得到文本框的内容,将内容push到todos
                    const todoText = this.todoText.trim()
                    if(!todoText.length){//非空判断
                        return
                    }
                    this.todos.push({
                        id:this.todos[this.todos.length-1].id+1,
                        title:todoText,
                        done:false
                    })
                    //添加完后清空
                    this.todoText = ''

                },
                handleremovetodoclick(index){
                    this.todos.splice(index,1)
                },

            }
        })
    </script>
</body>
</html>

效果图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/ooo123lll/article/details/80237754