【发布时间】:2019-09-19 05:40:09
【问题描述】:
我有一个 VueJS 应用程序,其中有一个用户列表和用户信息。
我正在使用两列布局,因此在左侧面板中我正在加载用户列表,当我点击任何用户时,用户信息将被加载到右侧面板。
我可以从右侧面板查看和编辑用户信息。 但更新的信息不会反映在左侧面板中。例如,如果我要编辑任何用户的名字和姓氏,那么它应该在左侧面板中更新,但我不知道如何在 VueJS 中进行。
index.vue
<template lang='pug'>
two-col-layout(v-loading='loading', :show-edit-view='isAddOrEdit', default-text='Select Employee')
template(slot='col-left-header')
el-input(
v-model='employeeSearchInput',
placeholder='Search Employee by Name or Email',
prefix-icon='el-icon-search',
).w-100.input-border-0
template(slot='col-left-body')
.fab.fab-rb
el-tooltip(content='Add Employee')
el-button(
v-if='addUserPerm',
type='success',
circle,
icon='el-icon-plus',
@click='$router.push("/employees/new")',
).btn-fab
template(slot='col-left-body-list')
router-link(
:key='employee.id',
v-for='employee in filteredItems',
:class='{ active: $route.params.employeeId === employee.id }',
:to='`/employees/${employee.id}/edit`',
).list-group-item.list-group-item-action.d-flex.border-0
.mr-11
employee-avatar(
v-if='employee.userPhoto',
:image='employee.userPhoto',
).size-42
employee-avatar(v-else, :email='employee.email').size-42
.flex-1.d-none.d-md-block
.fw-b {{ employee.firstName }} {{ employee.lastName }}
.fs-14 {{ employee.email }}
ul.list-unstyled.fs-14.mb-0
li(v-for='team in employee.teams' :key='team.id').d-flex.mb-1
.col-min-max.min-w-100.max-w-180
| • {{ team.team.groupName }}
.pl-3
el-tag(
size='mini', :type='getRoleTagColor(team.role.roleName)'
).el-tag-for-role.fs-12
| {{ team.role.roleName }}
</template>
Edit.vue
<template lang='pug'>
two-col-layout-edit(:loading-child='loadingChild', theme-color='#ffaeaf')
template(slot='header-pic')
employee-avatar(
v-if='employee.userPhoto',
@fileSelected='handleFileSelect($event)',
:image='employee.userPhoto',
show-uploader,
).size-100
employee-avatar(
v-else,
:email='employee.email',
@fileSelected='handleFileSelect($event)',
show-uploader
).size-100
template(slot='header-text') {{ employee.firstName }} {{ employee.lastName }}
template(slot='main-content')
el-form(
ref='editEmployee', :model='employee', label-position='top', :rules='rules',
@submit.prevent.native='validateEditEmpForm("editEmployee")'
)
h4.mb-4 Employee Information
.row
.col-md-6.col-xl-3
el-form-item(label='First Name', prop='firstName')
el-input(v-model='employee.firstName' :disabled="fncheckPerm()")
.col-md-6.col-xl-3
el-form-item(label='Last Name', prop='lastName')
el-input(v-model='employee.lastName' :disabled="fncheckPerm()")
.col-md-6.col-xl-3
el-form-item(label='Email', prop='email' )
el-input(v-model='employee.email' :disabled="fncheckPerm()")
.col-md-6.col-xl-3
el-form-item(label='Phone', prop='mobile' )
el-input(v-model='employee.mobile' :disabled="fncheckPerm()")
template(slot='footer-content')
.col-auto
el-button(type='danger', plain @click='removeUserConfirm()') Remove Employee
.col-auto.ml-auto
el-button(type='default' @click='cancelConfirm()') Cancel
el-button(type='success' @click="validateEditEmpForm('editEmployee')") Save
// things defined below will render in default slot
</template>
【问题讨论】:
标签: vuejs2 vue-component vuex