Jsコードを介してインスタンスを操作しようとしていますが、フォームをリロードするたびに、少なくとも1つのノードに「バインディング」属性が含まれているとインスタンスが機能しなくなるため、まったく成功しません。XSLT フォーム エンジンは、ロードされるたびに新しい値を取得することを知っています。また、ローカルに保存されたインスタンス ファイルを「再検証」する必要がありますが、それを行う方法が本当に見つかりません。
私はいくつかの試みをしましたが、うまくいきましたが、フォームを閉じるまではうまくいきます。フォームを再度開く (そして XSLTForms エンジンの新しいインスタンスが読み込まれる) たびに、フォームを読み込むことができなくなります。
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 オブジェクトを注入することによって:
model.defaultInstance.src = "";
model.defaultInstance.srcXML = newXmlNode;
または、可能な魔法の方法として私が見ることができるすべてを試してみてください:
model.rebuild();
model.recalculate();
model.revalidate();
また、インスタンスで:
model.defaultInstance.revalidate();
model.defaultInstance.validate_(newXmlNode);
model.defaultInstance.validation_(newXmlNode);
そして、アプリを壊さずに機能した唯一のことは次のとおりです。
model.defaultInstance.setDoc(newXmlNode);
しかし、インスタンスが読み込まれず、次のサブフォームに移動すると、次のメッセージが表示されるため、実際には機能していません: XML を解析できません。
インスタンスを消去する最後のケースを除いて、すべてのケースで、インスタンスの属性は常に同じであるため、これらの値は再検証されていないと思います。例: xsltforms_depfor=" 44 48 52 58 8 12 18 4 ". そこで、保存する前に XML の xsltforms_ で始まるすべての属性を削除し、再度読み込みを試みることにしましたが、どちらも機能しませんでした。
最後の例外を除くすべてのケースで、次の例外がスローされます: Error Dispatching event 'xsltforms-revalidate': ... TypeError document.getElementById(...) is null
では、Javascript から新しいインスタンスを動的にロードして再検証する方法はありますか? どんなアイデアでも大歓迎です、事前に感謝します!