vue1-43

文章详细介绍了Vue.js的核心特性,包括模板语法中的条件渲染、列表渲染、事件处理、计算属性以及组件定义和通信。还涉及到了数据绑定、v-if/v-show、v-for、事件修饰符、过滤器以及父子组件间的通信等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

在这里插入图片描述

需要声明变量

模板语法

@ click/change。。。。。/函数()<方法>
定义方法:
在这里插入图片描述
在vue中this指向的是实例

:class 的作用:使其变为一个动态属性
支持三目表达式的写法

<div :class="isColor?'red':'yellow'">切换背景色222</div>
<!--v-show v-if 指令-->
<div v-show="isshow">我是动态显示和隐藏</div>
<div v-if="iscreated">我是动态创建和删除</div>
<!--v-for 列表渲染的指令-->
<ul>
<li v-for="data in list">
{{data}}
</l1>
</ul>
<ul>
<li v-for="(item,index) in list">
{{item}}-{{index}}
</1ip
</ul>

在这里插入图片描述

todolist

<--双向绑定了一个输入框的value-->
<input type="text" v-model="mytext"/>
{{mytext}}
<button @clkick="handleAdd()">add</button>
<ul v-show="datalist.length">
<li v-for="(data,index) in datalist">
{{data}}
<button @click="handleDel(index)">del</button>
</li>
</ul>
<div v-show="!datalist.length">待办事项空空如也</div>


handleDel(index){
console.log("del",index)
this.datalist.splice(index,1)

vue中的splice:
语法格式:splice(index, len, [item])

可以用来替换/删除/添加数组内某一个值或几个值,该方法会改变初始数组。

index:数组开始下标
len:替换/删除的长度
item:替换的值,为删除时item为空

v-html

<div id="box">
{{mytext}}
<div v-html="mytext"></div>
</div>
<script>
new Vue({
el:"#box",
data:{
mytext:"<b>加粗的</b>"
}
}

通过v-html可以使其通过html’解析,否则页面直接显示

<b>加粗的</b>

class&style

vue2:set法
vue3:在这里插入图片描述

条件渲染

if 与else可以取代取反

<div v-if="isCreated">111111</div>
<div v-else>222222</div>

template v-if,包装元素template 不会被创建

列表渲染

<ul>
<li v-for="(item,index) of datalist">
{{item}}--{{index}}
</li>
</ul>
<ul>
<li v-for="(item,key) of obj">
{{key}}-{{item}}
</li>
</ul>


在这里插入图片描述
在这里插入图片描述
vue3可以通过返回数组的方式实现

模糊查询

includes(“”)

var arr =["aaa","add","bbb","bbc","ccc","ddd","eee","ade"]
var newlist = arr.filter(item=> item.includes("a"))
console.log(newlist)

但是删除后回不来
所以更适合:
在这里插入图片描述
或者:
return法:
在这里插入图片描述

事件处理器

handleInput(evt){
console.log("input",evt.target)

evt.target拿到的就是输入框

事件修饰符

阻止冒泡:

handleLiClick(evt){
console.log("li")
evt.stopPropagation()
},
<li @click.stop="handleLiclick">1111</li>
<div id="overlay" v-show="isShow" @click="isShow=false">
<div id="center" @click.stop>
<div>用户名:<input type="text"/></div>
<div>密码:<input type="password"/></div>
<div>
<button>登录</button>
</div>
</div>
</div>

或者:

<div id="overlay" v-show="isShow" @click.self="isShow=false">
<div id="center">
<div>用户名:<inputtype="text"/></div>
<div>密码:<input-type="password"/></div>
<div>
<button>登录</button>
</div>
</div>

按键修饰符

evt.code=
@keyup.enter.crtl:enter+crtl

购物车

1.创建一个新的数组,并且v-model双向绑定
2.value值为返回的对象,可以通过返回的值的.price算出价格
3.删除工作时不能只是删除原来对象中的值,否则会有bug
4.通过fileter过滤,覆盖原来的新数组

表单修饰符

.number变为数字类型,本来是字符串类型
去首尾空格:
.trim

计算属性

计算属性,负责逻辑放在计算属性中写
难以维护:
{{ myname.substring(0,1).toupperCase() + myname.substring(1) }}
更适合:

{{ myComputedName}}

computed{myComputedName(){
return this.myname.substring(0,1).toUpperCase() + this.myname.
}
}

0.data =>状态,被拦截。
1.方法==》事件绑定,逻辑计算。可以不用return,没有缓存
2.计算属性(重视结果)=》解决模板过重问题,必须有return,只求结果,有
缓存,同步。
3.watch(重视过程),监听一个值的改变。不用返回值,异步同步

watch

只要监听的值有改变,就可以让函数做一些事
监听值必须相等
在这里插入图片描述

fetch

get

methods:{
handleFetch(){
fetch("./json/test.json")
.then(res=>res.json())
.then(res=>{
console.log(res)
}.catch(err=>{
console.log(err)
})
}

post

get url路径 ?name=kerwin&age=100
post body请求体,
(1) x-www-formurlencoded , name=kerwin&age=100
(2) json ,
{“name”:“kerwin”,age:100}

过滤器

管道符 |
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

组件定义

将dom,js,css封装在一起
比如自定义一个<navbar>
在这里插入图片描述
其中的属性值都是隔离的
只能在组件内部中使用

1.起名字:js驼峰,html 链接符-
2.dom片段没有代码提示没有高亮显示-vue单文件组件解决
3.css只能写成行内。-vue单文件组件解决
4.template 包含一个根节点
5.组件是孤岛,无法【直接】访问外面的组件的状态或者方法。-间接的组件
通信来交流。
6.自定义的组件data必须是一个函数,
7.所有的组件都在一起,太乱了 —vue单文件组件解决

父传子

Vue.component("navbar",{
props:["myname"],//接受myname属性,
this.myname
template:<div>
<button>left</button>
<span>{{myname}}</span>
<button>right</button>
</div>
}

属性验证&默认属性

/∥ props:["myname","myright"],//接受myname属性,
this.myname
props:{
myname:String,
myright:Boolean
},/∥接受myname属性,
属性验证

子传父

在这里插入图片描述

事件的函数一定是在父组件中定义好的

new Vue({
el:"#box",
data: {
isShow: true
},
methods:{
handleEvent(data){
consoLle.1og(“父组件的定义的事件",data)
this.isShow = !this.isShow
}
}

中央事件总线

生命周期:mounted
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值