Hi,
ich arbeite sehr oft mit JSLink um Formulare oder Ansichten anzupassen.
Im großen und ganzen funktioniert das auch wunderbar. Leider habe ich manchmal das Phänomen, dass die Scripts nicht geladen bzw. ausgeführt werden (geladen schon).
MDS ist aus.
Wir haben bei uns auch ein etwas "komplexeres" Verfahren etabliert, um allen Seiten die gleiche JSLink Version bereitzustellen:
In der Root-SiteCollection befinden sich die Scripte, welche dynamisch eingebunden werden sollen. Hier hat jeder Lese-Recht.
In den jeweiligen Seiten befinden sich die JSLink-Scripte, welche die eigentlichen Scripte dynamisch laden. Dies geschieht mit folgendem Aufruf:
(function(){
var scriptKey = "TagCloudSource.js";
var scriptLink = "/Scripts/Source/TagCloud/TagCloudSource.js";
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function(){
SP.SOD.registerSod(scriptKey,scriptLink);
SP.SOD.executeFunc(scriptKey, null, function(){
console.log("ScriptOnDemand loaded: " + scriptKey);
});
});
/* config part */
SP.SOD.executeOrDelayUntilScriptLoaded(function () {
MyNamespace.TagCloud.tagCloudTitle = "Top Tags für '{0}'"; // title for each tag cloud based on field name
MyNamespace.TagCloud.tagDelim = ' | '; // delimiter between the tags
MyNamespace.TagCloud.tagAutoSize = true; // calculated size for each tag depending on occurrence
MyNamespace.TagCloud.ListTemplateType = 850; // 850 --> Pages library
MyNamespace.TagCloud.showTagCount = true; // Display total count for each tag
MyNamespace.TagCloud.RegisterTemplate();
}, scriptKey);
})();
Die eigentlichen Scripte haben dann immer als letzte Zeile folgendes im Bauch:
// notify final script load
SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs("TagCloudSource.js");
Sobald ich die Entwicklungsconsole offen lasse, funktionieren die Aufrufe zu 100%. Sonst kommt es vor, das ab und zu beim Aufruf die Scripte nicht feuern....
Woran könnte das Verhalten liegen?
Könnten irgenwelche Timeouts oder so beim Nachladen dafür sorgen?
Danke euch :)