我对Dojo很新,这就是我想要做的。我有一个标题窗格,使用以下代码以编程方式声明:
var pane = this._createTitlePane(config.widgets.title, config.widgets.position,
config.widgets.open);
_createTitlePane: function (title, position, open, optclass) {
var tp = new TitlePane({
title: title,
open: open
}).placeAt(this.sidebar, position);
domClass.add(tp.domNode, 'titlePaneBottomFix titlePaneRightFix');
if (optclass) {
domClass.add(tp.domNode, optclass);
}
tp.startup();
return tp;
},
稍后,当使用esri.hide单击按钮时,我试图隐藏此标题窗格。我的问题是如何获得对此标题窗格的引用?定义时没有ID。 当我查看chrome调试器时,我看到下面的行突出显示了小部件
<div class="titlePaneBottomFix titlePaneRightFix dijitTitlePane" title="" role="group" id="dijit_TitlePane_1" widgetid="dijit_TitlePane_1">
如果我尝试做类似esri.hide(dojo.byId(&#34; dijit_TitlePane_1&#34;))的事情,那么它会隐藏小部件。但是我可以使用此小部件ID来引用标题窗格吗?
答案 0 :(得分:1)
您可能希望在函数中为标题窗格指定自己的ID:
_createTitlePane: function (title, position, open, optclass, paneId) {
var tp = new TitlePane({
title: title,
id: paneId, // TitlePane id here
open: open
}).placeAt(this.sidebar, position);
domClass.add(tp.domNode, 'titlePaneBottomFix titlePaneRightFix');
if (optclass) {
domClass.add(tp.domNode, optclass);
}
tp.startup();
return tp;
}
然后你可以用它来引用它并隐藏它:
esri.hide(dijit.byId("theIdYouGaveIt").domNode);
要理解dojo.byId和dijit.byId之间的区别,这个link可能会有所帮助。
答案 1 :(得分:1)
此外,如果您在自己的自定义窗口小部件中创建此项,则还可以将标题窗格设置为本地参考,即:this.tp = new TitlePane({...})
。您需要从小部件内部访问它的任何地方,您只需调用&#34; this.tp&#34;。在小部件之外,您可以使用dot notataion访问它:myWidget.tp.doSomething()。更好的是,如果你在这样的模板中以声明的方式创建它:<div data-dojo-type=dijit/TitlePane" data-dojo-attach-point="tp" ...></div>
,当实例化小部件时,它将自动拥有一个句柄,以便#t; this.tp&#34;通过附加点。