【vue按需加载组件】

vue按需加载组件,或者异步组件,主要是应用了component的 is 属性

template中的代码:

这里的每一个按钮,都要显示不同的组件,所以我让他们使用了同一个方法名

 1 <template slot-scope="scope">
 2             <el-button
 3               type="text"
 4               size="mini"
 5               @click="handleSchedule('CustomerInfoSchedule', scope.row.customer_id)"
 6             >详情</el-button>
 7             <el-button
 8               type="text"
 9               size="mini"
10               @click="handleSchedule('VisitRecordSchedule', scope.row.customer_id)"
11             >回访</el-button>
12             <el-button
13               type="text"
14               size="mini"
15               @click="handleSchedule('AddCustomerSchedule',scope.row.customer_id)"
16             >编辑</el-button>
17             <el-button
18               type="text"
19               size="mini"
20               @click="handleSchedule('AddPeopleSchedule', scope.row.customer_id)"
21             >添加联系人</el-button>
22           </template>
1 <component 
2  :is="currentComponent" 
3  :customer_id="customer_id" 
4  @componentResult="componentResult"
5 >
6 </component>

script中的代码:

这里的组件使用request按需引入,我使用的点击事件,当事件触发的时候,引入对应的组件

首先在data中声明组件的属性

1 data() {
2   return {
3       currentComponent: "",
4       customer_id:'',
5    }
6 }

然后注册组件

这里的组件作为一个个方法,组件名是方法名,组件内容是方法体,有几个组件就写几个方法

 1 components: {
 2     AddCustomerSchedule(resolve) {
 3       require(["../components/AddCustomer"], resolve);
 4     },
 5     AddPeopleSchedule(resolve) {
 6       require(["../components/AddPeople"], resolve);
 7     },
 8     CustomerInfoSchedule(resolve) {
 9       require(["../components/CustomerInfo"], resolve);
10     },
11     VisitRecordSchedule(resolve) {
12       require(["../components/VisitRecord"], resolve);
13     },
14   },

定义的方法

 1 // 这里直接接收name,然后相对应的引入组件,同时传值
 2 handleSchedule(name, id) {
 3       this.customer_id = id;
 4       this.currentComponent = name;
 5     },
 6 // 这是子组件触发父组件返回回来的方法,因为我的组件都是弹出框
 7 // 所以在子组件关闭弹出框的时候,我让this.currentComponent为空
 8 // 同时可以选择性的刷新数据
 9     componentResult(type) {
10       if (type == "upData") {
11         this.getTableData();
12       } else {
13         this.currentComponent = "";
14       }
15     },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值