Java DOJO:无法使用New关键字初始化js
我有一个链接,如果我点击链接,我需要调用另一个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
<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附加点。经过这次更换后,它现在可以正常工作了。谢谢你的支持