En Responsive : il semble que les ressources dans les template d'objets ne soient pas interprétées

4.0
En Responsive : il semble que les ressources dans les template d'objets ne soient pas interprétées
0
Tags: #<Tag:0x00007f64879c0408>

#1

Bonjour,

Il semble que le code “<script type=‘text/javascript’ src=”‘JSRESOURCEURL:]’>" ne soit pas interprété en responsive

Est ce toujours d’actualité pour le responsive, y a t’il une autre manière de faire ?

cela fonctionne très bien en non responsive

Cordialement,
Olivier Migliorini


(David AZOULAY) #2

En responsive comme en legacy les resources SCRIPT (JavaScript) et STYLES de l’objet métier sont inclues automatiquement sans avoir besoin de les déclarer explicitement via des tags en [] (cette approche doit donc être réservé à des cas plus particuliers)


#3

David,

en effet, il s’agit bien d’un cas particulier, puisqu’il s’agit un fichier js, commun à plusieurs objets

Cordialement,
Olivier Migliorini


(David AZOULAY) #4

OK dans ce cas (je laisse François confirmer) il faut utiliser la fonction loadPartou la fonctions loadScript cf. https://www.simplicite.io/resources/4.0/jsdocui/Simplicite.UI.Engine.html


(David AZOULAY) #5

PS: Et pour l’URL de la resource partagée (donc de niveau disposition) il faut utiliser la fonction dispositionResourceURL de Simplicite.Ajax cf. https://www.simplicite.io/resources/4.0/jsdocui/Simplicite.Ajax.html


(François Genestin) #6

en responsive, on est sur une page unique et donc le chargement à la volée de script ne peut plus se faire avec cette syntaxe entre crochets. Le template d’un objet est chargé via jquery et ne traite que du DOM.

Il faut donc passer par les hooks client de l’objet et ne plus jamais mettre de script dans le template HTML.
voir les hooks client dans
https://www.simplicite.io/resources/documentation/04-ui/responsive.md

Il faut utiliser la ressource SCRIPT de l’objet, par exemple pour y charger un script spécifique avant d’afficher quoique ce soit :

(function(ui) {
    if (!ui) return; // not responsive UI
    var app = ui.getAjax(); // Ajax services
    Simplicite.UI.hooks.myObject = function(obj, callback) {
        ui.loadScript({
             url: app.dispositionResourceURL("mySharedScript","JS"),
             onload: callback
        });
    };
})(window.$ui);