commit | author | age
|
05e9c4
|
1 |
|
U |
2 |
|
|
3 |
function Vorlagen() { |
|
4 |
var self = this; |
|
5 |
this.cache = {}; // mustache templates |
|
6 |
|
|
7 |
/* |
|
8 |
Das HTML erzeugen, das entsteht, wenn eine Vorlage mit Inhalt |
|
9 |
gefüllt wird |
|
10 |
|
|
11 |
Das Füllen erfolgt asynchron, d.h. der Programmlauf geht nach dem |
|
12 |
Aufruf weiter ohne auf das Laden und Füllen der Vorlage zu warten. |
|
13 |
Das fertige HTML wird der Callback-Funktion übergeben |
|
14 |
sobald die Vorlage geladen und gefüllt ist, unabhängig davon, wo der |
|
15 |
Programmlauf zu diesem Zeitpunkt mittlerweile ist. |
|
16 |
|
|
17 |
vurl - URL zur Vorlagendatei |
|
18 |
inhalt - die JSON-Struktur, deren Inhalt in die |
|
19 |
Vorlage gefüllt werden soll |
|
20 |
cb - Callback-Funktion, die gerufen wird, wenn die Vorlage gefüllt ist. |
|
21 |
Dieser Callback-Funktion wird das fertige HTML übergeben |
|
22 |
*/ |
|
23 |
this.html_erzeugen = function(vurl, inhalt, cb) { |
|
24 |
var vorlage = self.cache[vurl]; |
|
25 |
if(vorlage === undefined) { |
|
26 |
self.vorlage_laden_und_fuellen(vurl, inhalt, cb); |
|
27 |
} else { |
|
28 |
self.vorlage_fuellen(vurl, inhalt, cb); |
|
29 |
} |
|
30 |
}; |
|
31 |
|
|
32 |
this.vorlage_fuellen = function(vurl, inhalt, cb) { |
|
33 |
cb(Mustache.render(self.cache[vurl], inhalt)); |
|
34 |
}; |
|
35 |
|
|
36 |
/* |
|
37 |
Eine Vorlage vom Server in den lokalen Speicher laden |
|
38 |
vurl - der URL unter dem die Vorlage zu finden ist |
|
39 |
inhalt - die JSON-Struktur, deren Inhalt in die |
|
40 |
Vorlage gefüllt werden soll |
|
41 |
cb - callback: Diese Funktion wird gerufen, wenn die Vorlage mit dem |
|
42 |
Inhalt gefüllt ist |
|
43 |
*/ |
|
44 |
this.vorlage_laden_und_fuellen = function(vurl, inhalt, cb) { |
|
45 |
/* |
|
46 |
$.ajax({ |
|
47 |
url: vurl, |
|
48 |
type: "GET", |
|
49 |
dataType : "text" |
|
50 |
}).done(function( vorlage ) { |
|
51 |
self.cache[vurl] = vorlage; |
|
52 |
self.vorlage_fuellen(vurl, inhalt, cb); |
|
53 |
}); |
|
54 |
*/ |
|
55 |
var xmlhttp = new XMLHttpRequest(); |
|
56 |
xmlhttp.onreadystatechange = function() { |
|
57 |
if (this.readyState == 4 && this.status == 200) { |
|
58 |
self.cache[vurl] = this.responseText; |
|
59 |
self.vorlage_fuellen(vurl, inhalt, cb); |
|
60 |
} |
|
61 |
}; |
|
62 |
xmlhttp.open("GET", vurl, true); |
|
63 |
xmlhttp.send(); |
|
64 |
}; |
|
65 |
|
|
66 |
} |