Vue模板插值表达式

举报
学海无涯yc 发表于 2022/08/06 18:54:33 2022/08/06
【摘要】 文章目录01.Vue声明式渲染02.MVVM03.Vue使用相关问题04.插值表达式05.事件06.操作标签内容01.Vue声明式渲染<body> <div id="#app"> {{msg}} </div> <script src="js/vue.js"></script> <script> new Vue({ el:"#app", data:{ msg:"Hello!V...


01.Vue声明式渲染

<body>
	<div id="#app">
		{{msg}}
	</div>

	<script src="js/vue.js"></script>
	<script>
		new Vue({
			el:"#app",
			data:{
				msg:"Hello!Vue"
			}
		})
	</script>
</body>

在这里插入图片描述

02.MVVM

MVVM指的是一种架构模式。通俗的来讲就是 视图 模型 和控制器的关系

  • M:viewmodel(model数据模型)
  • V:view视图
  • VM:viewModel控制器
<body>
		<!-- 指的是MVVM中的(V)view视图 -->
		<div id="app">
			{{msg}}
		</div>
		
		<script src="js/vue.js"></script>
		<script>
		// new Vue指的是MVVM中的VM(viewModel控制器) 把视图和数据联系起来
			new Vue({
				el:'#app',
				// data指的是MVVM中的M(model数据模型)
				data:{
					msg:'hello'
				}
			})
		</script>
	</body>

03.Vue使用相关问题

el绑定元素不能是html/body

new Vue({
    el:'body',
    data:{
        message:'Hello!'
    }
})

在这里插入图片描述

  • el绑定元素可以是标签名、类名、id名。
  • 为了避免不必要的问题,el绑定的元素一般使用的是id名
    原因:标签名和类名一般有多个,如果多个符合条件,只执行第一个符合条件的,而id名是唯一性的
<!-- 使用标签名的问题 -->
<body>   
    <div>
        {{message}}
    </div>
    <div>
        {{message}}
    </div>
    <script src="js/vue.js"></script>
    <script>
      	new Vue({
            el:'div',
            data:{
                message:'Hello!'
            }
        }) 
    </script>
</body>

在这里插入图片描述

  • data里数据的格式k:v,k:v
  • 重复使用data里的数据
    方法一:将再次使用数据的元素放入el绑定的元素中
<body>   
    <div id="app">
        {{message}}
        <div>
            {{message}}
        </div>
    </div>
    <script src="js/vue.js"></script>
    <script>
       new Vue({
            el:'#app',
            data:{
                message:'Hello!'
            }
        }) 
    </script>
</body>

在这里插入图片描述
方法二:实例化多个对象(不推荐)

<body>  
    <div id="app">
        {{message}}
    </div>
    <div id="box">
        {{message}}
    </div>
    <script src="js/vue.js"></script>
    <script>
       new Vue({
            el:'#app',
            data:{
                message:'Hello!'
            }
        }) 
        new Vue({
            el:'#box',
            data:{
                message:'Hello!'
            }
        }) 
    </script>
</body>

在这里插入图片描述

04.插值表达式

  • 在vue语法内部,可以使用{{}}称为插值表达式
  • 插值表达式内部,可以放置变量或者表达式或者函数
  • vue语法外部,使用不了插值表达式
  • 插值表达式内部放置的变量,只能是在data中声明过的,外部的数据不能使用
<body>   
    <div id="app">
        {{msg}}
   		<!-- 插值表达式内部,可以放置变量或者表达式或者函数 -->
        <ul>
            <li>{{1+2}}</li>
            <li>{{Math.PI}}</li>
            <li>{{2021%2==0?'2021是双数':"2021是单数"}}</li>
            <li>{{add()}}</li>
        </ul>
  		<!-- 插值表达式内部放置的变量,只能是在data中声明过的,外部的数据不能使用 -->
        {{m}}
    </div>
	<!-- vue语法外部,使用不了插值表达式 -->
    <div id="test">
        {{测试}}
    </div>
    <script src="js/vue.js"></script>
    <script>
    	let m="我是外部变量" ;
        new Vue({
            el:"#app",
            data:{
                msg:"hello",
                add:function(){
                    console.log('我是函数');
                }
            }
        })
    </script>
</body>

在这里插入图片描述

05.事件

  • 事件的结构:v-on:事件类型="方法名()" v-on:click="add()"
  • 事件是一种方法,不能放在data中,要放在methods中,methods是专门放置函数的地方
 <div id="app">
        <button v-on:click="add()">按钮{{num}}</button>
        <input type="text" v-on:blur="a()">
 </div>
 <script src="js/vue.js"></script>
 <script>
 	new Vue({
        el:"#app",
        data:{
            num:1
        },
        methods:{
            add(){
                console.log('被点击了')
            },
            a(){
                console.log('失去焦点了')
            }
        }
    })
 </script>

在这里插入图片描述
修改data中的数据 this.数据名=“所要修改的值”

add(){
   console.log('被点击了');
    this.num++;
}

在这里插入图片描述
methods中的函数里的this指向的是当前实例化new Vue对象

add(){
    console.log(this)
}

在这里插入图片描述
vue中对标签做修改:

  • 在vue中一定要想的是操作数据,而不是标签
  • 根标签(el绑定的元素)一般很少修改
  • $event $event指的是事件相关的参数 $event.target可以获取当前标签
  • 给标签取ref值 this.$refs.标签的ref的值

$event

<button v-on:click="add($event)">按钮{{num}}</button>
add(a){
    console.log(a)
    console.log(a.target)
    a.target.style.background='pink'
}

在这里插入图片描述
ref:

<button v-on:click="add()" ref="btn">按钮{{num}}</button>
add(){
    console.log(this.$refs)
    console.log(this.$refs.btn)
    this.$refs.btn.style.background="greenyellow"
}

在这里插入图片描述

06.操作标签内容

  • 使用插值表达式
  • 使用v-html和v-text

区别:

  • v-html可以识别标签
  • v-text识别不了标签,可以使用插值表达式{{}}代替

v-html有xss风险,可以通过html书写病毒攻击网站

<body>
    <div id="app">
    	<!--三种方法-->
        <div v-html="msg"></div>
        <div v-text="msg"></div>
        <div>{{msg}}</div>
    </div>

    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el:'#app',
            data:{
                msg:"<h1>Hello</h1>"
            }
        })
    </script>
</body>

在这里插入图片描述

2021.01.25 00:27

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。