当前位置:   article > 正文

forEach里面有await(vue3 监听reactive不起作用)_vue3 for idraw

vue3 for idraw

    let paymentTypeList = ref<Array<any>>([]); 

此时 forEach 里面调很多次接口  不知道paymentTypeList什么时候获取到

所以 await initUiData(); 异步执行完获取不到paymentTypeList

回显的时候detailData方法里面没有这个数据

  1. const initUiData = async () => {
  2. const allGroupUi = allUiViews.value?.uiViews;
  3. allGroupUi?.forEach((uiView: UiView, index: number) => {
  4. // viewOptionData[uiView.id] = {};
  5. let _uiClumns = uiView.uiClumns ? uiView.uiClumns : [];
  6. _uiClumns.forEach(async (column: UiClumn, cindex: number) => {
  7. if (column.ele_code) {
  8. const res: any = await getBaseInfoList({
  9. eleCode: column.ele_code,
  10. });
  11. if (res.status_code === '0000') {
  12. if (column.data_type == '5' || column.data_type == '18') {
  13. if (column.field_code == 'payment_type') {
  14. paymentTypeList.value = res.data;
  15. }
  16. }
  17. }
  18. });
  19. });
  20. };
  1. onMounted(async () => {
  2. if (billFormId && billFormId !== 'undefined') {
  3. await getUiData();
  4. } else {
  5. allUiViews.value = SessionStorageService.get('contractFormUiDataChange') as any as UiData;
  6. await initUiData();
  7. }
  8. if (billId && billId !== 'undefined') {
  9. detailData();
  10. } else {
  11. getBillInfo();
  12. }
  13. });

解决方案是用watch监听

之前定义paymentTypeList是reactive方式,但是监听不到

就换成了ref定义 不知道为啥 

  1. watch([paymentTypeList], async (oldval, newVal) => {
  2. //阶段描述
  3. let id = '';
  4. paymentTypeList.value.forEach((item: any) => {
  5. if (contractData.formData.pmContract.payment_type == item.code) {
  6. id = item.id;
  7. }
  8. });
  9. if (contractData.formData.pmContract.payment_type) {
  10. const res: any = await getRelation({
  11. primary_code: 'APM_PAY_MODE',
  12. priElementId: id,
  13. });
  14. if (res.status_code == '0000') {
  15. res.data.data.forEach((item: any) => {
  16. item.value = item.code;
  17. item.label = item.name;
  18. });
  19. custableConfigDatas.pmContractPayPlanList.cusColumnObj.stage_msg.options = res.data
  20. .data as any;
  21. }
  22. }
  23. });

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号