Java DOJO:无法使用New关键字初始化js

Java DOJO:无法使用New关键字初始化js,java,javascript,jakarta-ee,dojo,Java,Javascript,Jakarta Ee,Dojo,我有一个链接,如果我点击链接,我需要调用另一个Js使用新的关键字如下 <a style="padding: 2px 15px" data-dojo-attach-event="click:display">Form</a> display : function(){ new com.cn.clb.dr.mytasks.BrandForm({ formInfo: brandForm, brand: brandName

我有一个链接,如果我点击链接,我需要调用另一个Js使用新的关键字如下

<a style="padding: 2px 15px" data-dojo-attach-event="click:display">Form</a>

display : function(){
new com.cn.clb.dr.mytasks.BrandForm({
            formInfo: brandForm,
            brand: brandName
        }, formPlacer).initialize();
}
表单
显示:函数(){
新com.cn.clb.dr.mytasks.BrandForm({
formInfo:brandForm,
品牌:品牌名称
},formPlacer)。初始化();
}
这里第一次(第一次页面加载)上面的js调用非常完美,之后,我点击了上面的js没有调用的链接

在JS中,我包括了postreate()和initialize()


请告诉我如何调用js。

根据Dijit告诉您的附加信息,您正在尝试使用已注册的ID注册一个小部件,您需要先销毁您创建的第一个小部件,然后再基于同一元素创建另一个小部件

此外,传递给小部件构造函数的第二个参数表示
srcNodeRef
,该节点将被小部件自己的DOM替换。我在这里是在猜测,因为没有太多的上下文,但是您可能不想多次向它传递相同的节点引用,因为在第一次之后它可能无效

下面是一个我希望工作得更好的示例,它使用
destroilrecursive
销毁以前调用中存在的小部件,并使用
placeAt
将小部件放置在父节点下,而不是使用
srcNodeRef
参数替换节点

display : function(){
    var parentNode;
    if (this._displayWidget) {
        parentNode = this._displayWidget.domNode.parentNode;
        this._displayWidget.destroyRecursive();
    }
    else {
        parentNode = formPlacer.parentNode;
    }
    this._displayWidget = new com.cn.clb.dr.mytasks.BrandForm({
        formInfo: brandForm,
        brand: brandName
    }).placeAt(parentNode).initialize();
}

请注意,这目前没有考虑父节点中兄弟节点之间的位置;应该可以相应地修改
placeAt
调用。

最后我得到了修复,我们在html文件中使用ID属性,因此在html中使用数据dojo附加点,而不是使用ID。经过这次更换后,它现在可以正常工作了

使用数据dojo附着点而不是使用id am


您确定它完全没有被调用,而且不仅仅是发生了错误吗?检查开发工具中的控制台,并尝试在
new…
之前/之后进行日志记录。我怀疑,
formPlacer
引用在第二次到第二次时可能无效,但仅此代码继续,无法判断。这是在页面第一次加载时调用的,在同一页面中,我有链接,如果我再次单击链接,我将调用不执行BrandForm时的方法。开发工具中没有错误。我在新建之前和之后都放了一个日志。。。但前后日志是打印页面时第一次加载的,之后日志才单独打印。注意:如果我重新加载页面,它正在工作。这可能表明
new…
语句抛出错误。:)尝试在开发工具中打开“在所有错误上中断”,或者在其周围放置一个Try/catch,并将错误记录在catch块中,以查看实际发生的情况。Ken,我得到以下错误错误:尝试使用id==supportDoc_1注册小部件,但该id已经注册。最终我得到了修复,我们在html文件中使用了id属性,因此,我没有使用ID,而是在html中使用数据dojo附加点。经过这次更换后,它现在可以正常工作了。谢谢你的支持