【发布时间】:2018-09-28 09:37:24
【问题描述】:
我在 Dojo 中创建了一个自定义小部件
return declare("DrawTools", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
templateString: template,
layers: [],
constructor: function (featureLayerArr) {
},
postCreate: function () {
},
startup: function () {
var menu = new DropDownMenu({ style: "display: none;" });
var menuItem1 = new MenuItem({
label: "Save",
iconClass: "dijitEditorIcon dijitEditorIconSave",
onClick: function () { alert('save'); }
});
menu.addChild(menuItem1);
var menuItem2 = new MenuItem({
label: "Cut",
iconClass: "dijitEditorIcon dijitEditorIconCut",
onClick: function () { alert('cut'); }
});
menu.addChild(menuItem2);
menu.startup();
var button = new DropDownButton({
label: "hello!",
name: "programmatic2",
dropDown: menu,
id: "progButton"
}, this.drawToolsMenuNode).startup();
},
startMenu: function () {
}
});
Wdiget模板如下
<div>
<div data-dojo-attach-point="drawToolsMenuNode"></div>
</div>
我在另一个自定义小部件中实例化小部件如下
var drawTools = new DrawTools(this.allLayersArr);
drawTools.placeAt(this.drawToolsNode);
drawTools.startMenu();
DrawTools 小部件的启动方法没有被调用。
在这方面需要帮助。
【问题讨论】:
-
它不应该被自动调用。尝试添加 drawTools.startup()
-
其实我是在调用widgetInstance的placeAt方法。 var drawTools = new DrawTools(this.allLayersArr); drawTools.placeAt(this.drawToolsNode);