首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态替换和验证XSLTForms实例

动态替换和验证XSLTForms实例
EN

Stack Overflow用户
提问于 2015-05-07 17:24:11
回答 1查看 96关注 0票数 1

我试图通过Js代码操纵一个实例,但没有成功,因为每次重新加载表单时,如果至少在一个节点中包含“绑定”属性,实例就不再工作了。我知道XSLT引擎每次加载时都采用一些新的值,而且我保存的-locally实例文件必须“重新验证”,但我真的找不到方法。

我做了一些特蕾斯,他们成功了,但他们做了,直到我关闭表格。每次我重新打开表单(加载了一个新的XSLTForms引擎实例),它们就不能再加载了。

代码语言:javascript
复制
var model = document.getElementById('my-model').xfElement;

window.XsltForms_globals.openAction("XsltForms_change");        
xmlToLoadIn.parentNode.replaceChild(newXmlNode,xmlToLoadIn);
model.xfElement.addChange(newXmlNode);
window.XsltForms_globals.closeAction("XsltForms_change");

还可以通过注入xml对象:

代码语言:javascript
复制
model.defaultInstance.src = "";
model.defaultInstance.srcXML = newXmlNode;

甚至尝试一切我能看到的可能的神奇方法:

代码语言:javascript
复制
model.rebuild();
model.recalculate();
model.revalidate();

同样地,在实例中:

代码语言:javascript
复制
model.defaultInstance.revalidate();
model.defaultInstance.validate_(newXmlNode); 
model.defaultInstance.validation_(newXmlNode);

唯一没有破坏应用程序的是:

代码语言:javascript
复制
model.defaultInstance.setDoc(newXmlNode);

但是它并不真正有效,因为实例从未加载,当我导航到下一个子表单时,会显示一条消息:无法解析XML。

在所有情况下,除了最后一个只是擦除实例的实例外,实例属性总是相同的,因此我认为这些值没有被重新验证。例如xsltforms_depfor=“44 48 52 58 8 12 18 4”。因此,在保存之前,我决定删除所有从XML的xsltforms_开始的属性,然后尝试再次加载它,但是它也没有工作。

在所有情况下,除了最后一个例外,将引发以下异常:错误调度事件‘xsltforms-重新验证’:.TypeError document.getElementById(…)为空

那么,您知道如何从Javascript动态加载和重新验证一个新实例吗?欢迎有任何想法,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-09 19:44:53

通过javascript操纵实例结构一点问题都没有。这个问题是由于绑定声明造成的,我在子表单中使用这些声明阻止用户手动修改数据。例如。

代码语言:javascript
复制
<xf:bind nodeset="/application/params/param[@id='id']" readonly="true()" />
<xf:bind nodeset="/application/params/param[@id='description']" readonly="true()" />

我删除了它,一切顺利,所以我决定让这些输入通过Js读.就这么简单。

问题是绑定元素被分配给当前的子表单,部分属性取决于这个数字。当加载不同的实例时,xsltform引擎重新启动“子窗体计数”并重新启动,这似乎会混淆引擎并抛出错误,因为无法绑定绑定元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30107875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档