VUE中一个页面调用另一个页面的方法并修改数据data(记一次自己入的坑)

 A页面

<template>
    <div class="member-main">
        <el-form class="member-form" ref="form" :model="params" label-width="80px">
            <el-row>
                <el-form-item label="用户名" prop="name">
                    <el-input v-model="params.name" placeholder="请输入用户名" size="30"></el-input>
                </el-form-item>
                <el-form-item label="时间" prop="date">
                     <el-date-picker v-model="params.date" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"></el-date-picker>
                </el-form-item>
            </el-row>
            <div class="el-form-button">
                <el-button type="primary" @click="toPage('lo')">查询</el-button>
                <el-button type="primary" @click="toPage('l')">重置</el-button>
            </div>
        </el-form>
        <!-- 此处引入组件 -->
        <app-table ref="apptable"></app-table>
    </div>
</template>
<script>
import AppTable from '@/components/AppTable';
export default {
    components:{
        AppTable
    },
    data(){
        return {
            params:{
                name:'',
                date:'',
            }
        }
    },
    methods: {
        toPage(dir){
            if(dir==="lo"){
                // 调用组件的方法 selectMember 并传值
                this.$refs.apptable.selectMember(this.params)
            }else{

            }
        }
    }
}
</script>

B组件

<template>
    <div class="app-table-main">
      <el-table :data="tableData" class="data_table" id="data_table">
      <el-table-column prop="id" label="编号" width="180"></el-table-column>
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
      <el-table-column prop="state" label="状态"></el-table-column>
      <el-table-column prop="date" label="录入时间"></el-table-column>
      <el-table-column label="操作">
          <el-button type="primary" @click="updateMember()">修改</el-button>
          <el-button type="warning" @click="deleteMember()">删除</el-button>
      </el-table-column>
    </el-table>
  </div>
</template>
<script type="text/ecmascript-6">
import {selectMember }from '@/api/member'

const member = {
  data(){
    return {
      tableData:[{
          id: '2016001',
          name: '小明',
          state: '这是第一条数据'
        }]
    }
  },
  methods:{
    selectMember(dir){
      selectMember(dir).then(response =>{
        //用this即可修改
        this.tableData = response.data.contentList
      })
    }
  }
}
export default member
</script>

说一下遇到的坑:

1.A页面要引入B组件并给B组件一个ref ==>   <app-table ref="apptable"></app-table>

2.A方法中调用 this.$refs.apptable.selectMember 其中 apptable时1步骤设置的 selectMember是B组件的方法

3.在B方法中可以直接使用this设置data

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue ,可以使用 Vuex 来管理应用程序的状态,包括路由状态。当路由改变时,可以通过 Vuex 的 actions 来触发 state 的变化,然后在另一个路由通过 computed 属性或 watch 监听 state 的变化,并重新执行方法。 举例来说,假设我们有两个路由:/page1 和 /page2,它们都需要访问同一个状态 count。在 /page1 ,我们可以通过点击按钮来触发 count 的增加: ```html <template> <div> <h1>Page 1</h1> <p>Count: {{ count }}</p> <button @click="incrementCount">Increment</button> </div> </template> <script> export default { data() { return { // ... }; }, methods: { incrementCount() { this.$store.dispatch("incrementCount"); }, }, }; </script> ``` 在上面的代码,我们使用了 Vuex 来管理 count 状态,通过调用 incrementCount 方法来触发 state 的变化: ```javascript import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); export default new Vuex.Store({ state: { count: 0, }, mutations: { increment(state) { state.count++; }, }, actions: { incrementCount(context) { context.commit("increment"); }, }, }); ``` 在 /page2 ,我们可以通过 computed 属性来监听 count 的变化,并在变化时重新执行方法: ```html <template> <div> <h1>Page 2</h1> <p>Count: {{ count }}</p> </div> </template> <script> export default { data() { return { // ... }; }, computed: { count() { return this.$store.state.count; }, }, watch: { count() { // do something }, }, }; </script> ``` 在上面的代码,我们通过 computed 属性来监听 count 的变化,并将其绑定到页面。同时,我们也可以使用 watch 来监听 count 的变化,并重新执行方法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值