关联视图支持浏览数据定义

## 1.ecode-react代码配置方式

[图片附件未整合: ../../../../_assets/400730104109465600/001-6729762bb8.png]

2.发布方式[图片附件未整合: ../../../../_assets/400730104109465600/002-08d3b45ce0.png]

注意右键中设置生效范围

[图片附件未整合: ../../../../_assets/400730104109465600/003-65bd6203da.png]

## 3.核心代码

> 25.1201及以上版本，

```javascript
import { eventEmitter } from '@weapp/utils';
const ebbrowserlist_requestParamsMap = new Map();
let ebbrowserlist_cacheNewCompId = null;
let ebbrowserlist_timestamp = '';
window.axios.interceptors.request.use((config) => {
  if (config.url.indexOf('/form/common/browser/data/ebuilder') > -1) {
    // 如果是关联EB浏览框的请求，则缓存请求参数
    if (config.data && config.data.ebBrowserParams && config.data.ebBrowserParams.compId) {
      const { compId } = config.data.ebBrowserParams;
      ebbrowserlist_timestamp = `${Date.now()}`;
      ebbrowserlist_requestParamsMap.set(`${compId}_${ebbrowserlist_timestamp}`, { data:config.data });
      ebbrowserlist_cacheNewCompId = compId;
    }
  }

  return config;
}, (error) => Promise.reject(error));

class EbBrowserListViewPluginHook {
  name = 'EbBrowserListViewPluginHook';

  pluginCenter;

  isSameEbBrowserList = false;

  ebBrowserListCacheKey = '';

  onBeforeMount = () => {
    const { page, id: compId } = this.list.props || {};
    const { customData } = page || {};
    this.ebBrowserListCacheKey = `${compId}_${ebbrowserlist_timestamp}`;
    this.isSameEbBrowserList = customData?.ebViewModule === 'ebBrowserList' && ebbrowserlist_cacheNewCompId === compId;
  };

  destory = () => {
    ebbrowserlist_cacheNewCompId = null;
    ebbrowserlist_timestamp = null;
    if (ebbrowserlist_requestParamsMap.has(this.ebBrowserListCacheKey)) {
      ebbrowserlist_requestParamsMap.delete(this.ebBrowserListCacheKey);
    }
  }

  getDataParams = (...args) => {
    if (this.isSameEbBrowserList && this.ebBrowserListCacheKey) {
      const param = ebbrowserlist_requestParamsMap.get(this.ebBrowserListCacheKey);
      if (!param) {
        return [...args];
      }
      const { ebBrowserParams, variableMap, variableDataKeyMap } = param?.data || {};
      const dataParams = { ebBrowserParams:{ ...ebBrowserParams, variableMap, variableDataKeyMap }};
      return [dataParams, ...args];
    }
    return [...args];
  };
}

eventEmitter.on('@weapp/designer', 'plugin_center.ready.NList', ({ registerPlugin }) => {
  registerPlugin(EbBrowserListViewPluginHook);
});
```

> 25.1201及以下版本，最低25.0901
> 
> 如遇设置不生效，请检查ecode的生效范围设置。

```javascript
import { eventEmitter } from '@weapp/utils';
const ebbrowserlist_requestParamsMap = new Map();
let ebbrowserlist_timestamp = null;
window.axios.interceptors.request.use((config) => {
  if (config.url.indexOf('/form/common/browser/data/ebuilder') > -1) {
    // 如果是关联EB浏览框的请求，则缓存请求参数
    if (config.data && config.data.ebBrowserParams) {
      ebbrowserlist_timestamp = `${Date.now()}`;
      ebbrowserlist_requestParamsMap.set(`${ebbrowserlist_timestamp}`, { data:config.data });
    }
  }

  return config;
}, (error) => Promise.reject(error));

class EbBrowserListViewPluginHook {
  name = 'EbBrowserListViewPluginHook';

  pluginCenter;

  isSameEbBrowserList = false;

  ebBrowserListCacheKey = '';

  onBeforeMount = () => {
    const { page } = this.list.props || {};
    const { customData } = page || {};
    this.ebBrowserListCacheKey = `${ebbrowserlist_timestamp}`;
    this.isSameEbBrowserList = customData?.ebViewModule === 'ebBrowserList';
  };

  destory = () => {
    ebbrowserlist_timestamp = null;
    if (ebbrowserlist_requestParamsMap.has(this.ebBrowserListCacheKey)) {
      ebbrowserlist_requestParamsMap.delete(this.ebBrowserListCacheKey);
    }
  }

  getDataParams = (...args) => {
    if (this.isSameEbBrowserList && this.ebBrowserListCacheKey) {
      const param = ebbrowserlist_requestParamsMap.get(this.ebBrowserListCacheKey);
      if (!param) {
        return [...args];
      }
      const { ebBrowserParams, variableMap, variableDataKeyMap } = param?.data || {};
      const dataParams = { ebBrowserParams:{ ...ebBrowserParams, variableMap, variableDataKeyMap }};
      return [dataParams, ...args];
    }
    return [...args];
  };
}

eventEmitter.on('@weapp/designer', 'plugin_center.ready.NList', ({ registerPlugin }) => {
  registerPlugin(EbBrowserListViewPluginHook);
});
```
