Issues with ArcGIS Web AppBuilder creating custom widget by inheriting existing widget

713
1
05-20-2019 04:12 AM
BrentSlone3
New Contributor III

I am trying to extend the inbuilt Select widget in the ArcGIS Web AppBuilder for Desktop using dojo. According to the documentation by ESRI we always inherit the 'dijit/_WidgetBase' module to create the custom widget.

define(['dojo/_base/declare', 'jimu/BaseWidget'],function(declare, BaseWidget) {  //To create a widget, you need to derive from BaseWidget.  return declare([BaseWidget], {    // Custom widget code goes here     baseClass: 'jimu-widget-mywidget'  });});

Since I wanted the inherit he select widget I changed the code to the following:

define(['dojo/_base/declare', 'widgets/Select/Widget'],function(declare, Select) {  //To create a widget, you need to derive from BaseWidget.  return declare([Select], {    baseClass: 'jimu-widget-selectlsa',    startup: function() {      this.inherited(arguments);      console.log("tesiting")    }     });});

After copying all the HTML and CSS content from the default Select widget's to my custom widget's HTML and CSS the custom Select widget works fine.

Since I have inherited the default widget's Widget.js file I am able to call functions of the default widget form my custom widget.

However, in the default widget, there is one more file named SelectableLayerItem.js which has a method name _showActions. I tried adding the following code to access the _showActions method in the SelectableLayerItem.js file:

define(['dojo/_base/declare', 'widgets/Select/Widget','widgets/Select/SelectableLayerItem'],function(declare, Select, SelectableLayerItem) {  //To create a widget, you need to derive from BaseWidget.  return declare([Select, SelectableLayerItem], {    baseClass: 'jimu-widget-selectlsa',    startup: function() {      this.inherited(arguments);      console.log("tesiting")    },       _showActions: function(){        //overwrite    }  });});

After running the application, the application runs without any error in the console. However, my custom widget is not able to overwrite the _showActions method in the SelectableLayerItem.js file.

Instead of calling the overwritten method it always calls the default SelectableLayerItem.js's _showActions method.

How can I inherit multiple modules and access their methods independently?

0 Kudos
1 Reply
RobertScheitlin__GISP
MVP Emeritus

Brent,

   See this thread on this subject.

https://community.esri.com/thread/204004-extending-existing-widgets

Junshan, The lead WAB developer states his recommendation there.

0 Kudos