我继承了一个正在使用Dojo的项目,并且收到了一个非常奇怪的错误。
使用ajax调用的结果构建菜单
CREATE TABLE #Table1
([Nominal] int, [MktBuyAmt] int)
;
INSERT INTO #Table1
([Nominal], [MktBuyAmt])
VALUES
(7, 8),
(5, 5),
(3, 3)
SELECT CASE WHEN NOMINAL = MKTBUYAMT THEN NOMINAL ELSE MKTBUYAMT END AS NEWSS FROM #TABLE1
该函数被调用
NEWSS
8
5
3
但是mi虽然id正确,但是它是null,就像它找不到小部件一样
Dojo版本是1.10
此页面中的大多数内容都有效,但菜单中的事件始终会产生此错误。
答案 0 :(得分:0)
不知道你的其余代码,通过输出' e来猜测设置和测试。对象控制台......如果您将代码中的一行修改为以下内容,我认为您将获得所需的结果:
var mi = registry.byId(e.target.parentNode.id);
这里可以看到一个工作示例,其中的数据是'在onclick事件后输出到控制台:
答案 1 :(得分:0)
看起来你在处理程序中获得的目标是MenuItem中的某个节点,但不是菜单项本身的.domNode。我看到包含菜单项标签的节点。
您还可以使用registry。getEnclosingWidget来访问窗口小部件。如果您不希望n
函数处理所有菜单项,这可能会很方便。
function onShowSnapshot(e) {
var mi = registry.getEnclosingWidget(e.target);
current_snapshot = mi.data;
showSnapshot();
}