Vue
{{ }}
:插值;插值里面只能写表达式,不能写语句
指令:
v-text=“js值”
:渲染text内容
v-html=“js值”
:渲染html内容
v-for=“item in js值 / item of js值 / ( item, index ) in js值”
:循环创建dom
v-if="js条件"
:满足条件就创建dom;v-else
跟在v-if
后
v-show="js条件"
:满足条件就显示,不满足就添加css样式display: none
;跟v-if
不同的是,标签一直会存在。
v-on:click="函数名/表达式"
:绑定事件调用函数/执行表达式;可简写为@click
;函数名可以加括号,可不加括号,不加括号,事件默认获取的是event
,加括号可以传递任意参数,如果要获取event
就传$event
@keyup.ctrl.enter
:按ctrl+enter触发事件;
v-bind:title="js值"
:使用Vue定义的变量设为title的值;可简写为:title
v-cloak
:配合css代码;当Vue代码还没加载完成时,此时标签样式就会应用css里[v-cloak]{ }
的样式,Vue代码加载完后就会取消掉css里的样式
v-model
:
多个复选框,绑定到同一个数组:
Checked names: {{ checkedNames }}
new Vue({
el: '#example-3',
data: {
checkedNames: []
}
})
原理:
Checked names: {{ checkedNames }}
new Vue({
el: '#example-3',
data: {
checkedNames: []
}
methods: {
checkedEvent (e) {
//记录value值
const v = e.target.value
//查看数组中是否有此value值
if(this.checkedNames.includes(v)){
this.checkedNames = this.checkedNames.filter(item => {
//filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
return item !== v
})
}
else{
this.checkedNames.push(v);
}
}
}
})
Vue中style样式
//应用a的样式
//应用b的样式
注意:
Vue里面的方法必须写在methods
里面
Vue里面的this指Vue的实例
computed
:计算属性
它是有依赖缓存的,只有它所依赖的数据发生了改变,才会重新计算。这个计算出来的值,是可以直接当成data来用的,也就是说在用的时候,不需要添加()
。这个必须要有一个return值
计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。
methods
:方法
每次有数据更改,只要在模板里有使用这个方法,这个方法就会执行。它是 没有缓存的。
每当触发重新渲染时,调用方法将总会再次执行函数。
watch
:侦听属性
观测已有数据的。
当你有一些数据需要随着其它数据变动而变动,不能乱用
filters
:过滤器
可被用于一些常见的文本格式化。
{{ message | capitalize }}
filters: {
capitalize: function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
ajax
const app = new Vue({
el: '#app',
data: {
todos: []
},
// 一般的ajax请求都会放在这里面来做,这个是固定的,后面会讲到的生命周期中的一个方法
created() {
fetch('https://jsonplaceholder.typicode.com/todos')
.then(response => response.json())
.then(json => this.todos = json)
}
})
axios
基于promise用于浏览器和node.js的http客户端+
axios.get('https://jsonplaceholder.typicode.com/todos')
.then(resp => {
// 这里是和后端约定好的一个状态,可以是任何的key, 只要约定好就行。
if (resp.status === 200) {
// 这里才是成功的逻辑
this.todos = resp.data
} else {
// 处理错误的逻辑
}
})
.catch(err => {
// 处理错误的逻辑
})
自定义配置创建实例
axios.create([config])
const ajax = axios.create({
baseURL: 'https://jsonplaceholder.typicode.com'
})
ajax.get('/todos')
.then(resp => {
// 这里是和后端约定好的一个状态,可以是任何的key, 只要约定好就行。
if (resp.status === 200) {
// 这里才是成功的逻辑
setTimeout(() => {
this.todos = resp.data
this.isLoading = false
}, 3000)
} else {
// 处理错误的逻辑
}
})
.catch(err => {
// 处理错误的逻辑
})
当做项目时,需要把外部引用的东西扩展到Vue上就用此方法
// 在Vue这个对象的原型上扩展一个$http 让它指向于axios, 那么在实例上就可以直接使用this.$http来使用axios了
Vue.prototype.$http = axios