本来想把这个页面用jade渲染出来、评论部分用vue,但是想了想觉得麻烦,最后还是整个用vue的组件搞定他吧。 先上在线demo:nofollow" href="http://jsbin.com/ceqifo/1/edit?js,output">http://jsbin.com/ceqifo/1/edit?js,output
再上效果图
html
数据全都由根组件绑定下去的。这里还监听了几个事件。
然后先说个简单点的,,文本框的那个组件。
rush:js;">
Vue.component('commentTextarea',{
template:'\
type是如果点击了别人的评论,会显示 ”你回复xxx “ 的提示框,这个因为跨了组件通信而且两组件不是父子组件但是是兄弟组件,我把他们的通信挂在了父组件的一个属性上,实现通信。
文本框内的内容用一个v-model双向绑定,如果点击了确定,就触发一个 addComment事件并把文本内容传给父组件,父组件会监听事件。
commemt-content组件–评论内容
先来确定json格式
rush:js;">
comment: [
{
name: "有毒的黄同学",//评论人名字
time: "2016-08-17",content: "好,讲得非常好,good",reply: [ //回复评论的信息,是一个数组,如果没内容就是一个空数组
{
responder: "傲娇的",//评论者
reviewers: "有毒的黄同学",//被评论者
time: "2016-09-05",content: "你说得对"
}
}
]
再来看commemt-content组件
',props: ['comment'],methods: {
changeCommenter: function(name,index) {
this.$emit("change",name,index);
}
}
});
然后先说个简单点的,
type是如果点击了别人的评论,会显示 ”你回复xxx “ 的提示框,这个因为跨了组件通信而且两组件不是父子组件但是是兄弟组件,我把他们的通信挂在了父组件的一个属性上,实现通信。
文本框内的内容用一个v-model双向绑定,如果点击了确定,就触发一个 addComment事件并把文本内容传给父组件,父组件会监听事件。
commemt-content组件–评论内容
先来确定json格式
再来看commemt-content组件
',props: ['comment'],methods: { changeCommenter: function(name,index) { this.$emit("change",name,index); } } });
发表评论
\ 回复{{name}}\ \