whole_func_string: function replaceElementAttributeVariable(attrs, data) {
      let newAttrs = Object.assign({}, attrs);
  
      attrs && Object.keys(attrs).forEach(k => {
          let value = attrs[k];
          if (k.startsWith(':')) {
              // replace okam data variable
              let newDataName = data[value];
              newDataName && (newAttrs[k] = newDataName);
          }
          else {
              value = replaceTemplateVariable(value, data);
              newAttrs[k] = value;
          }
      });
      return newAttrs;
  }
func_code_string: function replaceElementAttributeVariable(attrs, data) {
      let newAttrs = Object.assign({}, attrs);
  
      attrs && Object.keys(attrs).forEach(k => {
          let value = attrs[k];
          if (k.startsWith(':')) {
              // replace okam data variable
              let newDataName = data[value];
              newDataName && (newAttrs[k] = newDataName);
          }
          else {
              value = replaceTemplateVariable(value, data);
              newAttrs[k] = value;
          }
      });
      return newAttrs;
  }
func_documentation_string: Replace element attribute bind data variable using the new data variable name
  
  @inner
  @param {Object} attrs the attributes to update
  @param {Object} data the data variable name map, key is the old variable name,
  value is the new variable name
  @return {Array} return the updated attributes