vue 的初始化
let vm = new Vue({ el: '#app', data: { msg: 1231, msg2: '' }, methods: { show() { alert('showFN') } }, directives: { color: { bind(el, binding) { el.style.color = binding.value; } inserted(el) { el.focus() }, updated(el) { console.log(123); } } }, filters: { fn(data) { return '过滤器data:' + data
} }, beforeCreate() {
}, created() {
}, beforeMount() {
}, mounted() {
}, beforeUpdate() {
}, updated() {
}, beforeDestroy() {
}, destroyed() {
}, components: { mytmp: { template: "<p>我是组件p</p>" } }, watch: { msg(newVal, oldVal) { console.log('msg被修改前:' + oldVal); console.log('msg被修改后:' + newVal); } }, computed: { msg4() { return "-----" } }, render(creatEle) { return creatEle() }, })
|
默认指令
@click.once.prevent @click.capture @click.stop @click.self
|
各种 v-指令
v-cloak v-text="msg" v-html v-bind:title/:title=“msg” v-on:click/@click=“” v-model v-for v-if v-show
|
自定义指令(directive)
创建自定义指令
私有的为 directives : { xxx : {…}}
Vue.directive('指令名称',{事件方法}) Vue.directive('focus', { bind(el,binding) { el.style.color = binding.value; }, inserted(el) { el.focus() }, updated(el) { console.log(123); } })
|
自定义指定的使用
使用的时候要加v-前缀
<input type="text" placeholder="搜索" v-model=searchName v-focus v-color="'blue'">
|
过滤器(filter)
创建 filter 过滤器
私有的为 filters: { xx( ) {…}
Vue.filter("fn", function(data, text) { return data + "123" + text; });
|
{{ item | fn("999") }} //item='哈哈' 返回结果为:哈哈123999
|
动画效果(transition)
使用transition包裹住内容,并使用css进行过度效果
<transition name="my"> //加了name的话,css要是控制为 .my-enter, .my-leave-to ... <h3 v-if="flag" >哈哈哈</h3> </transition>
|
.v-enter .v-leave-to .v-enter-active .v-leave-active
|
使用第三方动画库进行动画效果
<transition enter-active-class="animated flipInX" leave-active-class="animated flipOutY" :duration="{enter:2000,leave:500}"> <h1 v-if="flag">{{msg}}</h1> </transition>
|
enter-active-class="第三方库的类名" leave-active-class="第三方库的类名" :duration="{enter:200,leave:500}" 设置线性的过度时间
|
半场动画
<transition @before-enter="beforeFn" //给予绑定半场动画的3个函数 @enter="Fn" @after-enter="afterFn" > <span v-if="flag"></span> </transition>
|
beforeFn(el){ el.style.opacity=0 el.style.transform='translate(0,0)' }, Fn(el,done){ el.offsetWidth; el.style.opacity=1 el.style.transform='translate(50px,450px)' el.style.transition='all 1s ease' done(); }, afterFn(el){ this.flag=!this.flag; }
|
多个列表等的动画过度(transiton-group)
<transition-group appear tag="ul" mode="out-in"> <li v-for="(item,idx) in list" :key="item.id" @click="removeFn(idx)">{{item.id}}--{{item.name}}</li> </transition-group>
|
组件(component)
创建定义组件
私有的为components: { name : { template : xx } }
Vue.component('name', {template :'<h3>哈哈是否</h3>'}) Vue.component('name', {template :'#aaa'})
|
<template id="aaa"><h4>456464</h4></template>
|
组件中的data
components:{ temp: { template:'#temp', data() { return { a : 1, b : 2 } }, } }
|
子组件使用父组件的数据(props)
<son-temp :sonmsg="msg"></son-temp> //在父组件的标签中使用:属性='xx' 来绑定数据到子组件 props:['sonmsg'] //再在子组件中使用 props:['属性名'],就可以在子组件中使用了
|
子组件使用父组件的方法($emit)
<haha :ss="msg" @func="log"></haha> //在父组件的标签中使用@名字=‘方法名’ 来绑定方法到子组件 在子组件中使用this.$emit ( 'func' ) 就可以使用父组件的方法 如果给予父组件中的方法函数,子组件调用之后,可以返回给父组件想要的数据
|
methods: { log(test){ console.log('123' + test); this.tt=test } } this.$emit('func',this.sun)
|
使用ref来获取页面中的dom操作
<h4 ref="myh4">啊哈哈哈</h4> //定义ref, this.$refs.myh4.innerHTML //可以操作定义的dom <son-temp ref="zj1"></son-temp> //给予子组件上ref
|
this.$refs.zj1.msg this.$refs.zj1.fn( )
|
路由(router)
引入与使用
routes:[ {path:'/',redirect:'/login'}, {path:'/login',component:{template:'#login'}}, component: { 显示的组件 }, {path:'/reg',component:{template:'#reg'},children:[{path:'ll',component:ll}]} ],
|
<router-link to="/login" tag="span">登陆</router-link> //to='要到的地址' tag='变成定义的标签' <router-view></router-view> //路由的显示窗口
|
获取url中的数据(params和query)
<router-link to="/login?num=12">登陆</router-link> {path:'/reg',component:regcmp} //这种的如果想要获取num的话,需要使用this.$route.query.num 来获取 <router-link to="/login/10">登陆</router-link> {path:'/login/:num',component:login}, //这种的如果想要获取num的话,需要使用this.$route.params.num 来获取
|
多个路由的指向
routes:[{ path:'/', components:{ default:{template:'#header'}, lefts:{template:'#left'}, rights:rights, } }]
|
<router-view></router-view> <router-view name="lefts"></router-view> <router-view name="rights"></router-view>
|
监听数据(watch)
watch:{ msg(newval,oldval){ console.log(‘change’) }, $route.path(newval,oldval){ if(newval=='/login'){ alert('登陆') }else{ alert('注册') } } }
|
计算属性(computed)
computed: {
name3(){ console.log(123); return this.name1+'--'+this.name2 }, }
|