vue学习(11):父子组件

1.小球动画flag标识符的作用分析

@before-enter="beforeEnter"

@enter="enter"

@after-enter="afterEnter"

>

var vm = new Vue({

el:'#app',

data:{

flag:false;

},

methods:{

beforeEnter(el){

el.style.transform = 'translate(0,0)'

},

enter(el,done){

el.offsetWidth

el.style.transform = 'translate(150px,450px)'

el.style.transition='all 1s ease'

done()

},

afterEnter(el){

//这句话第一个功能是,是控制小球的显示和隐藏,第二个功能是直接跳过后半场动画,让flag标识符直接变为false,当第二次再点击按钮的时候,flag false -> true

this.flag=!this.flag

//Vue把一个完整的动画,使用钩子函数拆分为了两部分;我们使用flag标识符,来表示动画切换

//刚开始,flag = false -> true -> false

}

}

})

2.父组件向子组件传值和data与props的区别

//父组件,可以在引用子组件的时候,通过属性绑定(v-bind:)的形式,把需要传递给子组件的数据,以数据绑定的形式,传递到子组件的内部,供子组件使用

var vm = new Vue({

el:'#app',

data:{

msg:'123 啊-父组件中的数据'

},

methods:{}

components:{

//结论:子组件中,默认无法访问到父组件中的data上的数据和methods中的方法

com1:{

data(){

//注意:子组件中的data数据,并不是通过父组件传递过来的,而是子组件自身私有的,比如:子组件通过Ajax,请求回来的数据,都可以放到data身上;

//data上的数据,都是可读可写的

return{

tittle:'123'

content:'qqq'

}

}

//template:'

这是子组件---{{msg}}

'//直接访问父组件中的msg访问不到

//组件中的所有props中的数据,都是父组件传递给子组件的

//props中的数据,都是只读的,无法重新赋值

props:['parentmsg'],//把父组件传递过来的parentsmsg属性,先在props数组中,定义一下,这样,才能使用这个数据

template:'

这是子组件---{{parentsmsg}}

'

}

}

})

3.子组件通过事件调用向父组件传值

//父组件向子组件传递方法,使用的是事件绑定机制v-on,当我们自定义了一个事件属性之后,那么子组件就能够,通过某些方式,来调用传递进去的这个方法了

//定义了一个字面量类型的组件模板对象

var com2 = {

template:"#tmp1",//通过制定一个Id,表示说,要去加载这个指定的Id的template元素中的内容,当做组件的HTML结构

data(){

return{

sonmsg:{name:'小头儿子',age:'6'}

}

}

methods:{

myclick(){

//当点击子组件的按钮的时候,如何拿到父组件传递过来的func方法,并调用这个方法?

//emit英文原意是触发调用的意思

this.$emit('func',this.sonmsg)

console.log('ok')

}

}

}

var vm = new Vue({

el:'#app',

data:{

datamsgFormSon:null

},

methods:{

show(data){

this.datamsgFormSon = data

}

},

components:{

com2

}

})

4.组件案例评论列表

  • 评论人:{{item.user}}

    {{item.content}}