楼主解决了吗?好像通过@自定义方法名='父组件的方法名'这样绑定到子组件里面取不行,只能通过:自定义方法名='父组件方法名',然后在子组件中的props:['自定义方法名'],再在子组件中要使用的地方使用this.自定义方法名
父组件:
v-for="item in list" :key="item.id">
{{item.content}}
{{item.user}}
import commentChilder from './comment-childer'
export default {
components: {
'comment-childer' : commentChilder
},
data () {
return {
list: [
{id: this.uuid(), user: '李白', content: '天生我材必有用'},
{id: this.uuid(), user: '王健林', content: '先赚它一个亿'},
{id: this.uuid(), user: '雷军', content: '站在风口上,猪都能飞起来'}
]
}
},
created () {
this.loadComment()
},
methods: {
//uuid是return一个字符串
uuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
},
loadComment () {
if (localStorage.getItem('cmts')) {
var list = JSON.parse(localStorage.getItem('cmts'))
this.list = list;
}
}
}
}
子组件:
评论人:
评论内容:
export default {
components: {
},
data () {
return {
user : null,
content : null
}
},
//然后在再props这里引入父组件中传入的:自定义方法名
props: ['createUuid'],
methods: {
addContent () {
if(this.user !== null && this.content !== null){
//在子组件中this.自定义方法名,才能使用
//因为在父组件中createUuid()对应的方法是return的,这样的话我每次触发addContent方法就会重新生成一个新的uuid
var content = {id: this.createUuid(), user: this.user, content: this.content}
console.log('id is: ' + this.createUuid())
var list = JSON.parse(localStorage.getItem('cmts') || '[]')
list.unshift(content)
localStorage.setItem('cmts', JSON.stringify(list))
this.user = this.content = null
this.$emit('loadComment')
} else {
alert("评论人或内容不能为空!");
}
}
}
}