我继承了一个正在使用Dojo的项目,并且得到了一个非常奇怪的错误。
使用 AJAX 调用的结果构建菜单
mi = new dijit.MenuItem({ label:"Snapshot " + ro.name, onClick:onShowSnapshot });
mi.data = ro.auid;
snap_show.addChild(mi);
函数被调用
function onShowSnapshot(e) {
var mi = registry.byId(e.target.id);
current_snapshot = mi.data;
showSnapshot();
}
但mi为null,尽管id正确,但它似乎无法找到小部件
Dojo版本为1.10
此页面中的大多数功能都可以正常工作,但来自菜单的事件总是产生此错误。
2条答案
按热度按时间xt0899hw1#
不知道代码的其余部分,通过将“e”对象输出到控制台来猜测设置和测试......我认为如果您将代码中的一行修改为以下内容,您将获得所需的结果:
下面是一个工作示例,其中“data”在onclick事件后输出到控制台:
https://jsfiddle.net/538g8aet/6/
qhhrdooz2#
处理程序中的目标似乎是MenuItem中的某个节点,而不是菜单项本身的.domNode。我看到了包含菜单项标签的节点。
您还可以使用registry.getEnclosingWidget来访问小部件,如果您不希望
n
函数处理所有菜单项,这可能会很方便。