修改实例上的数据
vm.$set(vm.movie: 'adress', '华联') vm.$set(target, 属性名, 属性值)
Vue.set(targrt, 属性名, 属性值) 这两个都可以给VUE追加自定义数据
this.set(this.movies, 'address', ‘上海’) (在事件里)
在方法里添加
vm.$set(vm.arr, 0, 'learn')
数组变异方法(改变原数组)
vm.hobby.splice(2, 0, 'qwe')替换
vm.hobb.pop() 删除最后一个
push()
shift()
unshift()
sort()
reverse()
数组不改变原数组(返回一个新数组)
filter()
concat()
slice()
表单修饰符(可以连用)
v-model.trim 去掉前后空格
v-model.lazy 失去焦点
v-model.number 只识别数字
事件修饰符(可连用)
@click.prevent="sub" 阻止浏览器默认行为
.stop 阻止冒泡
.once 只触发一次
.self 在自身出发
按键修饰符(可连用)
.enter
.tab
.up
.down
.left
.right
例子 @keyup.enter=""
计算属性(用它的值)(有缓存)(没办法传值)
{{reverseStr}}(方法一)属性的调用
conputed: {
reverseStr() {
return this.msg.split(''),reverse().join('')
},
address: {
set(){
要修改原有的属性
},
get(){
return
}
}
}
{{reverseStr}()} (方法二) 方法的调用 (需要传参时用)
methods: {
reverseStr() {
return this.msg.split(''),reverse().join('')
}
}这个方法比computed性能低,没有缓存
watch {} 监听(一个值影响多个值的时候)
监听data里面的属性改变的时候才会触发
msg(newVal, oldVal) {
this.rerser(data新定义) = newVal.split(''),reverse().join('')
}
vue生命周期
在使用new Vue()创建一个Vue实例,在vue构造函数内部发生的事情
Vue的三个阶段
1 创建阶段
1)收集配置项 ,初始化时间 --- beforeCreate()
此时的this.$el this.$data === undefined
2) 把配置项分配项到实例,但el没有挂载 ------created()
this.$el == undefined this.$data可访问到
(在这个钩子函数中可以请求数据)
(第一找 如果没有template(模板))第二找如果没有没有el 这个周期是没有的,停留在这个周期 。render优先级最高
3)beforeMount() 根据模板和数据生成虚拟的dom,存在内存中
4)mounted() 把内存里面的虚拟dom 替换了模板,有了真实的dom,el挂在完毕(可以操作dom了,比如一进页面获取input的焦点)
2更新阶段(多次触发)
1)beforeUpdate 数据改变
2) updated 视图已经改变
3销毁阶段
1)beforeDestroy() 销毁前
2) destrooyed() 销毁后