filter-container能变成组件吗?

来源:14-1 电子书列表查询条件开发

SpringSecurity

2019-12-17

老师我想把filter-container里面的内容也变成组件,但这个时候我就遇到一个问题,listQuery是绑定在子组件的el-input,当我改变了listQuery列表中的值,但是父组件中的这些数据是不会改变的,这个让我很苦恼不知道该怎么办。

写回答

2回答

Sam

2019-12-18

好的,下面提供一些示例代码,假设子组件的名称为 FilterContainer,子组件源码类似下面这样:

<div class="filter-container">  
  <el-input    
    v-model="listQuery.title"    
    placeholder="书名"    
    style="width: 200px"    
    class="filter-item"  
    clearable    
    @keyup.enter.native="handleFilter"    
    @clear="handleFilter"    
    @blur="handleFilter"  
  />
</div>

在子组件的 handleFilter 方法中,调用父组件传入的 onChange 事件,并将子组件的 listQuery 传入:

handleFilter() {
  console.log('handleFilter', this.listQuery)
  this.listQuery.page = 1
  this.refresh()
  this.$emit('onChange', this.listQuery) // 调用父组件传入的事件
}

那么我们在父组件中可以引用 FilterContainer 这个组件并绑定 onChange 事件:

<filter-container @onChange="onFilterChange" />

然后在父组件中处理这个事件

methods: {  
  onFilterChange(listQuery) {    
    this.listQuery = listQuery  
  }
}

这样我们就将子组件的 listQuery 传递到父组件的 listQuery 了

0
1
SpringSecurity
非常感谢!谢谢老师
2019-12-19
共1条回复

Sam

2019-12-17

你好,这个时候我们需要进行父子组件通信,比如通过vuex来统一存储状态,或者用onChange事件手动更新父组件状态等,都是可行的方案

1
1
SpringSecurity
老师,您可以给一段示例代码吗?我必感激不尽。
2019-12-18
共1条回复

Vue Element+Node.js开发企业通用管理后台系统

基于Element的中后台课程,一套中小型企业通用的后台管理系统

2829 学习 · 1714 问题

查看课程