vue.js基础指令和父子通讯总结

简介: vue.js基础指令和父子通讯总结

1. 基础指令知识代码案例


v-bind指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-bind指令</title>
    <style>
        .active {
            border: solid 1px red;
        }
    </style>
</head>
<body>
<div id="app">
    <img v-bind:src="imgSrc" alt="">
    <br>
    <img :src="imgSrc" alt="" :title="imgtitle+'!!!'" :class="isActive?'active':''" @click="changeActive">
    <br>
    <img :src="imgSrc" alt="" :title="imgtitle+'!!!'" :class="{active:isActive}" @click="changeActive">
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el:'#app',
        data: {
            imgSrc : 'http://www.itheima.com/images/logo.png',
            imgtitle : '黑马泽权',
            isActive : false
        },
        methods:{
            changeActive:function (){
                this.isActive = !this.isActive
            }
        }
    })
</script>
</body>
</html>

v-model指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
<!--    v-model 双向绑定数据-->
    <input type="button" @click="getM" value="修改message">
    <input type="text" v-model="message" @keyup.enter="getM">
    <h2>{{message}}</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el:'#app',
        data : {
            message: '黑马程序员'
        },
        methods: {
            getM:function (){
                // alert(this.message)
                this.message = '真牛逼'
            }
        }
    })
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
<!--    修饰符lazy-->
    <input type="text" v-model.lazy='message'>
    <h2>{{message}}</h2>
<!--    修饰符number-->
    <input type="text" v-model.number="age">
    <h2>{{age}}-{{typeof age}}</h2>
<!--    修饰符trim-->
    <input type="text" v-model.trim="name">
    <h2>您的名字是:{{name}}</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            message : 'hello',
            age:18,
            name : ''
        }
    })
</script>
</body>
</html>

2. 组件化父子通讯

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
<cnp1 @addr="changetotal" @remove="changetotal"></cnp1>
    <h2>点击次数:{{totals}}</h2>
</div>
<template id="cnp">
    <div>
        <button @click="addr">+1</button>
        <button @click="remove">-1</button>
    </div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    const cnp = {
        template : id='#cnp',
        data(){
            return {
                counter :0
            }
        },
        methods : {
            addr(){
                this.counter++
                this.$emit('addr',this.counter)
            },
            remove(){
                this.counter--
                this.$emit('remove',this.counter)
            }
        }
    }
    var app = new Vue({
        el:'#app',
        data : {
            totals : 0
        },
        methods: {
            changetotal(counter){
                this.totals = counter
            }
        },
        components : {
            cnp1 : cnp
        }
    })
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <cnp1></cnp1>
    <cnp1></cnp1>
    <cnp1 ref="aaa"></cnp1>
    <button @click="btnClick">按钮</button>
</div>
<template id="cnp">
<div>我是子组件</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el:'#app',
        data: {
        },
        methods: {
          btnClick(){
              // 1.$children
              // console.log(this.$children)
              // this.$children[0].showMessage()
              // console.log(this.$children[0].name)
              // 2.$refs
              console.log(this.$refs.aaa.name)
          }
        },
        components : {
            cnp1 : {
                template : id='#cnp',
                data(){
                  return {
                      name : '我是name'
                  }
                },
                methods : {
                    showMessage(){
                        console.log('showmessage')
                    }
                }
            }
        }
    })
</script>
</body>
</html>
相关文章
|
3天前
|
JavaScript 前端开发
请详细解释一下Vue的模板语法中各个指令的具体用法。
请详细解释一下Vue的模板语法中各个指令的具体用法。
20 2
|
3天前
|
JavaScript 前端开发 算法
千分位分隔?一个vue指令搞定
千分位分隔?一个vue指令搞定
50 0
|
3天前
|
JavaScript 前端开发 算法
函数防抖?一个vue指令搞定
函数防抖?一个vue指令搞定
39 0
|
3天前
|
JavaScript
vue常用指令
vue常用指令
14 1
|
3天前
|
JavaScript 前端开发
vue常见的指令
vue常见的指令
10 2
|
3天前
|
JavaScript 前端开发 安全
【Vue】内置指令真的很常用!
【Vue】内置指令真的很常用!
|
3天前
|
JavaScript 前端开发 开发者
Vue的指令系统:Vue内置指令的使用
【4月更文挑战第24天】Vue.js 指令详解:简化DOM操作与数据绑定。Vue提供以`v-`开头的内置指令,如`v-bind`(响应式更新属性)、`v-model`(双向数据绑定)、`v-if/v-else`(条件渲染)、`v-for`(循环渲染)、`v-on/@`(事件监听)等,提升开发效率和代码可读性。通过`v-bind`绑定属性,`v-model`处理表单数据,`v-if/v-for`控制元素显示与循环,以及`v-on`响应事件,开发者能更高效地构建用户界面。理解并掌握这些指令对Vue开发至关重要。
|
3天前
|
JavaScript 前端开发 UED
数据绑定魔法:Vue中的插值和指令
【4月更文挑战第22天】Vue.js 是一款轻量级前端框架,擅长处理动态数据。本文聚焦于Vue中的数据绑定,包括插值和指令。插值({{ }})用于在HTML中展示JavaScript表达式,如变量和简单运算。指令(v-前缀)如v-bind、v-model和v-on,则提供更复杂的声明式渲染。v-bind绑定属性,v-model实现双向数据绑定,v-on监听DOM事件。指令还支持修饰符(如.prevent)和动态参数,增强灵活性。掌握这些,能提升开发效率并创建响应式界面。
|
3天前
|
JSON JavaScript 前端开发
在JavaScript中,常用的指令
【4月更文挑战第21天】在JavaScript中,常用的指令
11 2
|
3天前
|
JavaScript 开发者
VUE指令: 请解释v-pre指令的作用。
`v-pre`指令在Vue中用于避免元素及子元素的编译,显示原始HTML。当需要防止模板解析,如固定文本,可使用此指令。但注意,它会忽略插值、事件绑定等。适用于提升性能,跳过无指令节点的编译。
12 0