Send a layer to the Attribute Table widget

The following steps explain how to send a layer from your widget to the Attribute Table widget. Since the attribute table only displays layers in the map, make sure to add the layer to the map.

Steps:
  1. Import the jimu/LayerInfos/LayerInfos module.
  2. Get the instance of LayerInfos, and bind the layerInfosChanged event.
    LayerInfos.getInstance(map, map.itemInfo).then(lang.hitch(this, function(layerInfosObj) {
      this.own(layerInfosObj.on(
        'layerInfosChanged',
        lang.hitch(this, this.onLayerInfosChanged)));
    }));
    
    • If the layer has already been added to the map, use the instance of LayerInfos to get layerInfo by layer id.
      var layerInfo = this.layerInfosObj.getLayerInfoById(fLayer.id);
      this.publishData({
          'target': 'AttributeTable',
          'layer': layerInfoSelf
      });
      
    • Otherwise, add a new layer to the map, get the new layerInfo from the onLayerInfosChanged function, and publish it to the attribute table.
      map.addLayer(fLayer);
      
      onLayerInfosChanged: function(layerInfo, changeType, layerInfoSelf) {
        if (!layerInfoSelf || !layerInfo) {
          return;
        }
        if ('added' === changeType) {
          layerInfoSelf.getSupportTableInfo().then(lang.hitch(this, function(supportTableInfo) {
            if (supportTableInfo.isSupportedLayer) {
              this.publishData({
              'target': 'AttributeTable',
              'layer': layerInfoSelf
              });
            }
          }));
        } else if ('removed' === changeType) {
          // do something
        }
      }