在domConstruct.create之后的方法上的dojo

00jrzges  于 2022-12-08  发布在  Dojo
关注(0)|答案(3)|浏览(207)

我的问题是在一个刚刚创建的元素上显示一个工具提示(从数据库中提取的数据)。我需要更新它的内容(我还没有成功地做到这一点),并在mouseover和mouseleave上设置一个事件。
代码如下:

// in for loop
domConstruct.create('p', {'data-dojo-attach-point':'tooltipExample' + tooltipIndex,'innerHTML': myValue}, this.myNode);

// on each tooltipExample element:
on(this.tooltipExample1, "mouseover", lang.hitch(this, function (evt) {
    // open popup
}));
on(this.tooltipExample1, "mouseleave", lang.hitch(this, function (evt) {
    // close popup
}));

显然,on方法不起作用:
无法获取上的属性值:对象为空或未定义
我也有几次问题,创建两次相同的id,因为界面刷新本身。
你知道我该怎么做吗?

zf9nrax1

zf9nrax11#

在这种情况下,使用data-dojo-attach-point是无用的,因为这是dojo解析器执行后的最后一项工作,并将每个元素附加到其模板;因此只需将id和atach事件直接添加到生成的Item:
上图为一个工作示例
第一个
Fiddle Here

unftdfkk

unftdfkk2#

尝试将id属性添加到p元素。
domConstruct.create('p', { id:'tooltipExample' + tooltipIndex,'innerHTML': myValue}, this.myNode)
示例:jsfiddle

zrfyljdw

zrfyljdw3#

你可以把它放在一个循环中,并根据你的需要命名它。

this.spa = domConstruct.create("p", {
                   innerHTML: "Lorem ipsum",
                   style: "color: blue;",
                   onclick: function(){
                      console.log(this.innerHTML); // print -> Lorem ipsum
                      this.innerHTML = "change content";
                   },
                   onmouseenter: function(){
                      this.style = "color: green;"
                   },
                   onmouseout: function(){
                      this.style = "color: blue;"
                   }
                });
                domConstruct.place(this.spa, this.domNode);

相关问题