{{username.toUpperCase()}}
是html的语法,应该这样写
可以省略为简洁写法
(强制绑定属性)
简洁写法,
计算属性高级----**计算属性存在缓存,多次读取只执行一次getter计算
computed: {
all: {
get() {
return this.first + " " + this.last
},
set(value) {
this.first = value.split(" ")[0]
this.last = value.split(" ")[1]
}
}
},
function(newVal,oldVal){}
函数调用说明属性值发生了变化class基本语法:class="xxx"
小凡
a写到data中去小凡
Boolean类型,写到data中去小凡
直接指定类名就行style语法:style={color:data里面的数据}
小凡
iscolor写在data中去 <p v-if="ok">成功了</p>
<p v-else>失败了</p>
<button @click="ok=!ok">切换</button>
<p v-show="ok">表白成功了</p>
<p v-show="!ok">表白失败了</p>
v-for
v-for="(item index) in list" :key="index"
v-for="(value,key) in obj " :key="key"
注意的地方:
list
本身,只是改变了数组对象内部的数据,vue
并不知道这种改变,只是监视了list
的改变,没有监视内部对象push()
,pop()
,shift()
,unshift()
,splice()
,sort()
,reverse()
的重写(1.先调用原生的方法,2.更新界面)数组内部变化,自动更新界面 data: {//代表model层
//1 并没有改变list本身,vue并不知道这种改变,只是监视了list的改变,没有监视内部对象
//2 内部对push(),pop(),shift(),unshift(),splice(),sort(),reverse()的重写(1.先调用原生的方法,2.更新界面)
//数组内部变化,自动更新界面
list: [
{title: "奥迪", price: 18999},
{title: "宝马", price: 5999},
{title: "奔驰", price: 3323},
{title: "凯迪拉克", price: 14546},
]
},
methods: {
//删除某一个
handle(index) {//这里splice可以更新界面
this.list.splice(index, 1)
},
//更新某一个
update(index) {
// this.list[index].age = 78// }//没调方法,没有调用变异方法,vue不知道,不会更新界面
this.list.splice(index, 1, {title: "别克", price: 9999})
}
}
搜索和排序
<input type="text" v-model="searchTitle">
<ul>
<li v-for="(item,index) in filterList" :key="index">
品牌:{{item.title}}----价格:{{item.price}}----点击数:{{item.click}}
</li>
</ul>
<button @click="orderModel=0">原始排序</button>
<button @click="orderModel=1">价格升序</button>
<button @click="orderModel=2">价格降序</button>
<button @click="orderModel=3">点击升序</button>
data: {
list: [
{title: "奥迪1", price: 18999, click: 23},
{title: "宝马1", price: 5999, click: 54},
{title: "奔驰", price: 3323, click: 32},
{title: "凯迪拉克1", price: 14546, click: 13},
],
searchTitle: '',
orderModel: 0//0为原始排序,1为价格升,2为价格降,3为点击数升
},
computed: {
filterList() {
//得到相关的数据
const {searchTitle, list, orderModel} = this
//对list进行过滤
const newArr = list.filter(item => item.title.includes(searchTitle))
if (orderModel === 0) {//为0的时候就不排了
return newArr
}
return newArr.sort((a, b) => {
if (orderModel === 1) {
return a.price - b.price
} else if (orderModel === 2) {
return b.price - a.price
} else if (orderModel === 3) {
return a.click - b.click
}
})
}
},
@click=回调函数(要传的参数,$event)
同时传入参数以及获取事件对象身上的值,可以这样写按钮
-------$event
可以用handle(a, event) { console.log(a, event.target.innerText) }
.shop
—阻止默认行为的用.prevent
@keyup.enter=""
表示enter键抬起时候触发回调函数用v-model
去拿到value
的值
阻止表单的默认提交行为:@submit.prevent=""
阻止默认行为
记住一句话:v-model永远得到的是value的值,修改的也是value的值
<select v-model="cityId">
<option>未选择</option>
<option :value="item.id" v-for="(item) in city">{{item.name}}</option>
</select><br>