【发布时间】:2019-02-20 02:00:49
【问题描述】:
我有一个由项目列表组成的父 vue 组件,当单击一个项目时,一个编辑部分子组件变得可见,在子组件的挂载方法上,参数设置为编辑但是当单击不同的项目时,挂载方法对孩子当然不会再次调用,保持相同的状态可见我如何重置孩子?,孩子的内容是使用道具发送的,父母大致
<div v-for="user in users" :key="user.id" @click=editUser(user)>{{user.name}}
</div>
<EditUser props="editedUser" edit=true v-if=editingUser
method: editUser(user){
this.editingUser=true
this.editedUser.name=user.name;
}
和孩子大致:
mounted:function(){
this.name=editedUser.name;
}
<input type="text" v-model="name"
【问题讨论】:
-
请显示一些代码,以便我们更好地理解和回答。同样,当您说“..单击其他项目时...”时,您是说要单击父项中的其他项目并使用该项目道具更新子项,对吗?
-
是的,基本上是一个非常简单的杂物
-
你可能没有——或者,错误地——在
EditUser组件中声明了 props。在这种情况下,没有反应,子组件不会响应父组件的更新。如果这不是问题,您可能不会在更新editedUser道具时设置name。mounted不会在道具更新时被调用;所以,你需要为此定义一个观察者。无论哪种方式:请发布可执行代码。 -
我每天都在使用 Vue.js,并且完全按照您的描述进行操作,完全没有任何问题。由于您只是粗略地显示您的代码,因此无法查看您的问题所在。但是在上面的例子中,你肯定没有正确传递你的道具。
props="editUser"行如果它做任何事情,只是传递实际的字符串“editUser”当然不是对象。 -
P.S.请在此处阅读文档示例vuejs.org/v2/api/#props 和此处vuejs.org/v2/guide/… 特别注意在`v-bind:title="post.title"` 中使用ov
v-bind不用说v-bind的简写是只是冒号本身。
标签: vue.js