|  |  | 
 |  |  | function AppVorlage() { | 
 |  |  |   var self = this; | 
 |  |  |   var appMenu; | 
 |  |  |   var vorlagen; | 
 |  |  |   // var vorlagen; | 
 |  |  |   var cache; // mustache templates | 
 |  |  |  | 
 |  |  |  | 
 |  |  |   this.init = function() { | 
 |  |  |     self.vorlagen = new Vorlagen(); | 
 |  |  |     //self.vorlagen = new Vorlagen(); | 
 |  |  |     self.cache = new Array(); | 
 |  |  |     self.appMenu = new AppMenu(); | 
 |  |  |     self.appMenu.init( | 
 |  |  |       "data/menu/", | 
 |  |  | 
 |  |  |  | 
 |  |  |   this.dialog_zeigen = function(vurl, inhalt) { | 
 |  |  |     var dlg = document.querySelector(".dialog"); | 
 |  |  |     self.vorlagen.html_erzeugen( | 
 |  |  |     self.html_erzeugen( | 
 |  |  |       vurl, | 
 |  |  |       inhalt, | 
 |  |  |       function(html) { | 
 |  |  | 
 |  |  |     dlg.innerHTML = ''; | 
 |  |  |   }; | 
 |  |  |  | 
 |  |  |   /* Vorlagen */ | 
 |  |  |  | 
 |  |  |   /* | 
 |  |  |     Das HTML erzeugen, das entsteht, wenn eine Vorlage mit Inhalt | 
 |  |  |     gefüllt wird | 
 |  |  |  | 
 |  |  |     Das Füllen erfolgt asynchron, d.h. der Programmlauf geht nach dem | 
 |  |  |     Aufruf weiter ohne auf das Laden und Füllen der Vorlage zu warten. | 
 |  |  |     Das fertige HTML wird der Callback-Funktion übergeben | 
 |  |  |     sobald die Vorlage geladen und gefüllt ist, unabhängig davon, wo der | 
 |  |  |     Programmlauf zu diesem Zeitpunkt mittlerweile ist. | 
 |  |  |  | 
 |  |  |     vurl - URL zur Vorlagendatei | 
 |  |  |     inhalt - die JSON-Struktur, deren Inhalt in die | 
 |  |  |               Vorlage gefüllt werden soll | 
 |  |  |     cb - Callback-Funktion, die gerufen wird, wenn die Vorlage gefüllt ist. | 
 |  |  |           Dieser Callback-Funktion wird das fertige HTML übergeben | 
 |  |  |   */ | 
 |  |  |   this.html_erzeugen = function(vurl, inhalt, cb) { | 
 |  |  |     var vorlage = self.cache[vurl]; | 
 |  |  |     if(vorlage === undefined) { | 
 |  |  |       self.vorlage_laden_und_fuellen(vurl, inhalt, cb); | 
 |  |  |     } else { | 
 |  |  |       self.vorlage_fuellen(vurl, inhalt, cb); | 
 |  |  |     } | 
 |  |  |   }; | 
 |  |  |  | 
 |  |  |   this.vorlage_fuellen = function(vurl, inhalt, cb) { | 
 |  |  |     cb(Mustache.render(self.cache[vurl], inhalt)); | 
 |  |  |   }; | 
 |  |  |  | 
 |  |  |   /* | 
 |  |  |     Eine Vorlage vom Server in den lokalen Speicher laden | 
 |  |  |     vurl - der URL unter dem die Vorlage zu finden ist | 
 |  |  |     inhalt - die JSON-Struktur, deren Inhalt in die | 
 |  |  |               Vorlage gefüllt werden soll | 
 |  |  |     cb - callback: Diese Funktion wird gerufen, wenn die Vorlage mit dem | 
 |  |  |             Inhalt gefüllt ist | 
 |  |  |   */ | 
 |  |  |   this.vorlage_laden_und_fuellen = function(vurl, inhalt, cb) { | 
 |  |  |     /* | 
 |  |  |     $.ajax({ | 
 |  |  |       url: vurl, | 
 |  |  |       type: "GET", | 
 |  |  |       dataType : "text" | 
 |  |  |     }).done(function( vorlage ) { | 
 |  |  |       self.cache[vurl] = vorlage; | 
 |  |  |       self.vorlage_fuellen(vurl, inhalt, cb); | 
 |  |  |     }); | 
 |  |  |     */ | 
 |  |  |     var xmlhttp = new XMLHttpRequest(); | 
 |  |  |     xmlhttp.onreadystatechange = function() { | 
 |  |  |       if (this.readyState == 4 && this.status == 200) { | 
 |  |  |         self.cache[vurl] = this.responseText; | 
 |  |  |         self.vorlage_fuellen(vurl, inhalt, cb); | 
 |  |  |       } | 
 |  |  |     }; | 
 |  |  |     xmlhttp.open("GET", vurl, true); | 
 |  |  |     xmlhttp.send(); | 
 |  |  |   }; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } | 
 |  |  |  |