子组件通过v-model绑定父组件变量
父组件:
<test-model v-model="inputValue"></test-model>
<span>{{inputValue}}</span>
data:{
inputValue: "inputValue"
}
子组件:
<input :value="value" @input="$emit('f1', $event.target.value)"> 1:通过input框的@input进行关联
<button @click="f2">click me</button>
model:{
prop:'value',
event:'f1'
}
props:['value']
methods:{
f2(){
this.$emit('f1', 'xxx');
}
}
$ref 获取dom元素,父调用子中的函数
父组件:
<Uediter ref="ue"></Uediter>
<h1 ref="h1Ele">这是H1</h1>
mehods:{
f1(){
this.$refs.ue.f2();
console.log(this.$refs.h1Ele.innerText);
}
}
子组件:
mehods:{
f2(){ console.log(2); }
}
provide、inject爷孙组件传参
父组件:
provide(){
return{
tabs:this,
val:'demo'
}
}
methods:{ updateNav(){ console.log(1); } },
子组件:
inject:['tabs'],
data(){ return { str:this.val } },
methods(){
updateNav(){
this.tabs.updateNav();
}
}
computed计算属性
new Vue({
data:{ a:2,b:3 },
methods:{ f1(){ return (a-0)+(b-0); } },
computed:{
f2(){ return (a-0)+(b-0); },
f3:{
get(){ return (a-0)+(b-0); },
set(newValue){
this.a=newValue/2;
this.b=newValue/2;
}
}
})
watch监听器
data:{ a:2,b:3 },
watch:{
a(newValue,oldValue){}, // newValue是a的新值,oldValue为a的旧值
// 当a发生改变时触发watch.a函数
//强化监听,可以监听对象的内部变化
a:{
deep:true,
handler:function(newValue,oldValue){}
}
}
- 使用方法2:var vm=new Vue({ data:{a:2,b:3}... });
vm.$watch('b',function(newValue,oldValue){ };
过滤器filter
Vue.filter('contentFilter',(value)=>{
return value.tostring().toUpperCase().replace('tmd','***');
})
使用:
{{content | contentFilter}}
<input type="text" :value="content | contentFilter">
filters:{
add(num1,num2,num3){
return num1+num3+num3;
}
}
使用:{{ data1 | filter(data2,data3) }}