2012-03-27 6 views
0

Der Titel dieser Frage mag ein wenig verwirrend erscheinen, aber hier ist was passiert mit mir.Wie kann ich verhindern, dass Dojo-JavaScript von einem benutzerdefinierten Steuerelement mit rendered = false gerendert wird?

Als erstes benutze ich Notes/Domino 8.5.3 mit UP1.

Ich habe eine Xpage mit einem benutzerdefinierten Steuerelement im Bearbeitungsmodus. Innerhalb des benutzerdefinierten Steuerelements befinden sich verschiedene Elemente, die digit.forms verwenden. Ich habe versucht, das benutzerdefinierte Steuerelement so einzustellen, dass es nur im Bearbeitungsmodus gerendert wird, aber auch wenn es sich im Lesemodus befindet, werden bestimmte Dojo-Elemente immer noch gerendert. Um dies zu testen, habe ich es sogar auf rendered = false für die Kontrolle gesetzt.

<xc:ccEditDocument rendered="false"></xc:ccEditDocument> 

Wenn vergleiche ich die Quelle des XPage mit dem Steuer Brauch als VS Quelle des XPage ohne benutzerdefinierte Steuerung bei allen folgenden Unterschiede = false gemacht angetroffen werden:

<script type=”text/javascript” src=”/xsp/.ibmxspres/dojoroot-1.6.1/ibm/xsp/widget/layout/layers/xspClientDojoUI.js”></script> 
<script type=”text/javascript”>dojo.require(’dijit.form.Form’)</script> 

und

enctype=”multipart/form-data” dojoType=”dijit.form.Form” 

Dies verursacht tatsächlich ein Problem für mich mit IE8 und iFRAME Rendern eines PDFs (es funktioniert natürlich in allen anderen realen Browsern).

Gibt es eine Möglichkeit, das benutzerdefinierte Steuerelement wirklich nicht die Dojo-Formularelemente rendern zu lassen?

Danke!

UPDATE

jjtbsomhorst hatte das Update! Es wurde eine Bedingung für die geladene Eigenschaft des benutzerdefinierten Steuerelements hinzugefügt.

<xc:ccEditDocument rendered="#{javascript:document1.isEditable()}" 
loaded="${javascript:document1.isEditable()}"> 
</xc:ccEditDocument> 

Danke !!

Antwort

4

Verwenden Sie die geladene Eigenschaft und schalten Sie das Laden des Elements mit einer Viewscope-Variablen um. Diese Viewscope-Variable wird mit einem URL-Parameter gefüllt. Da Sie die URL ändern und eine vollständige Aktualisierung durchführen, wird die geladene Eigenschaft neu bewertet. Ich denke, das sollte dazu führen, dass das Dojo nicht rendert, bis der Dojotyp geladen ist.

+0

Danke! Die geladene Eigenschaft war die Lösung! Ich habe einfach die folgende ist dies für mich gearbeitet: \t \t \t \t

2

Sie müssen die gerenderte Eigenschaft des Dojo-Moduls im benutzerdefinierten Steuerelement selbst festlegen. Dies bestimmt dann zur Laufzeit, ob das Modul zur Liste der zu rendernden Ressourcen hinzugefügt wird oder nicht.