vue2
Vue.filter('format',function(timer,formatter){
//filter 没有this
return moment(timer).format(formatter)
})
let vm = new Vue({
el:'#app',
data(){
return {
msg:{a:1},
checks:[{check:true},{check:true},{check:true}],
timer:1734512832100,
money:'28',
show:false
}
},
filters:{
//局部过滤器
fixed(value,num){
return '¥' + Number(value).toFixed(num)
}
},
computed:{
checkAll:{
get(){//取值执行get方法
return this.checks.every(item=>item.check)//every有一项是false就返回false
},
set(newValue){
this.checks.forEach(item=>{
item.check = newValue;
})
}
}
},
directives:{
//指令有生命周期 钩子函数(默认写成函数的话:bind + update)
//bind 当指令绑定上的时候,会执行一次
//inserted插入的时候
//update当引用的数据变化时会执行一个钩子
//componentUpdate
//unbind
// clickOutside(el,bindings,vnode){
// // console.log(el,bindings,vnode.context)
// document.addEventListener('click',function(e){
// if(!el.contains(e.target)){ //el.contains
// let method = bindings.expression; //bindings.expression
// //vm.hideFn();
// vnode.context[method]() //vnode.context
// }
// })
// },
clickOutside:{
bind(el,bindings,vnode){
el.handler = function(e){
if(!el.contains(e.target)){
let method = bindings.expression;
vnode.context[method]()
}
}
document.addEventListener('click',el.handler)
},
unbind(el){
document.removeEventListener('click',el.handler)
}
},
//focus(el){el.focus()},//这时既没更新也没绑定,也没放到页面中所以不生效
focus:{
// bind(el){
// Vue.nextTick(()=>{
// el.focus()
// })
// }
inserted(el){ //插入时的生命周期
el.focus()
}
}
},
methods:{
fn(){
console.log(123)
},
showFn(){
this.show = true;
},
hideFn(){
this.show = false;
}
},
//watch三种写法:函数,对象,字符串
watch:{
msg:[
{
handler(newValue,oldValue){
//如果是对象类型无法获取老值
console.log(newValue,oldValue)
},
deep:true //在内部再去对这个对象取值
},
{
handler(newValue,oldValue){
console.log(newValue,oldValue)
},
immediate:true //立即执行,用的少,一般会直接写到mounted
},
'fn'
]
}
})

浙公网安备 33010602011771号