我有一个div如下所示:
<div id="xyz" dojoAttachPoint="xyz" style="display: none;"> </div>
现在我要显示/隐藏它。如果我使用dojo.byID这样做,它的工作原理。但是,如果我使用dojoAttachppoint它,它不能正常工作。我没有收到任何错误,但没有发生变化。
dojo.byId("xyz").style.display="none";
dojo.byId("xyz").style.display="";
this.xyz.style.display ="none";
this.xyz.style.display ="";
可能是什么问题?
答案 0 :(得分:1)
您是否在使用基类dojo.declare
的{{1}}声明的类中的模板中使用上述内容?
您对附加点的理解是不明确的。当dijit._Templated
解析tenmplate时,当它看到“dojoAttachPoint”属性时,它将在dijit对象中创建一个带有附加点名称的属性。因此,“xyz”是dijit类对象中的属性。在读取模板时,名称取自名为“dojoAttachPoint”的属性。之后不再使用dojoAttachPoint属性。
如果“this”指向您创建的dijit类,dijit._Templated
将指向 DOM元素(即div),而不是小部件。因此不具有“domNode”属性。跟踪this.xyz
中的源代码以确认。
因此,您需要执行一些dijit/_Templated.js line#191
调用以确认console.log
正在返回正确的div。如果是,则可以尝试this.xyz
查看是否可以隐藏它等。
至于为什么dojo.style(this.xyz, "display", "none")
不起作用,它可能是特定于浏览器的事情,因为它应该与this.xyz.style.display = "none"
做同样的事情。你需要深入挖掘才能找到答案。