BasemapGallery<\/A> a znovu centrovat mapu při změně základní mapy.<\/P>define([\n 'dojo\/_base\declare',\n 'dojo\/_base\lang',\n 'dojo\/dom',\n 'dojo\/dom-construct',\n 'esri\/domUtils',\n 'esri\/dijit\/BasemapGallery',\n 'dijit\/_WidgetBase',\n 'dijit\/_TemplatedMixin',\n '.\/_RecenterMixin',\n 'dojo\/text!.\/_templates/BasemapSwitcher.html'\n], function(\n declare, lang, dom, domConstruct,\n esriDomUtils, BasemapGallery,\n _WidgetBase, _TemplatedMixin,\n _RecenterMixin,\n template\n) {\n return declare([_WidgetBase, _TemplatedMixin, _RecenterMixin], {\n templateString: template,\n postCreate: function() {\n var node = dom.byId('map_root');\n esriDomUtils.hide(this.domNode);\n domConstruct.place(this.domNode, node);\n var map = this.get('map');\n this.gallery = new BasemapGallery({\n map: map,\n showArcGISBasemaps: true\n }, this.bmNode);\n this.gallery.startup();\n this.gallery.on('selection-change', lang.hitch(this, function() {\n this.recenter(); \/\/ MIXIN MAGIC\n }));\n },\n & nbsp ; hide: function() { \ n & nbsp ; & nbsp ; esriDomUtils.hide(this.domNode); \ n & nbsp ; }, \ n & nbsp ; show: function() { \ n & nbsp ; & nbsp ; esriDomUtils.show(this.domNode); \ n & nbsp ; } \ n }); \ n}); < / PRE > < P > < SPAN style = "font-size: 8pt ; color : #505050 ; " > < EM > Když se podíváte na tento příklad , mohl bych dokonce přesunout metody hide / show do mixinu a znovu je použít jinde < / EM > < / SPAN > < / P > < P > < / P > < H2 id = "toc-hId-1015442459" id = "toc-hId-1015442459" > Počkejte chvíli < / H2 > < P > Možná se ptáte sami sebe , < EM > jaký je rozdíl < / EM > mezi něčím jako < STRONG > _WidgetBase < / STRONG > a mixinem ? Typicky je mixin sám o sobě docela neužitečný . V příkladu výše , pokud byste jen rozšířili samotný < STRONG > _RecenterMixin < / STRONG > , neměli byste metodu < STRONG > postCreate < / STRONG > ani < STRONG > templateString < / STRONG > , se kterými byste mohli pracovat . Mixin může dokonce záviset na něčem jako je < STRONG > _WidgetBase < / STRONG > , zapojení do metod životního cyklu . V jádru stále rozšiřujete moduly , rozšiřujete chování nebo widgety . < / P > < P > < / P > < P > Na github jsem pro vás umístil < A href = "https://github.com/odoe/esrijs-mixin-sample" rel = "nofollow noopener noreferrer" target = "_blank" > demo repozitář tohoto projektu </ A > , abyste si mohli hrát . < / P > < P > < / P > < P > Takže běžte ven a zjistěte , jestli můžete začít vyčleňovat mixiny ve svém projektu a možná zjednodušit údržbu své aplikace . Možná zjistíte , že se vám opravdu líbí možnost znovu používat chování mezi různými widgety , < EM > využít více ze všech tvrdých prací , které jste vložili do svého kódu </ EM > . < / P > < P > < / P > < P > Pro více tipů a triků geodev navštivte můj blog na adrese