2010-12-06 3 views
22

Je viens de commencer à utiliser le moteur de template de jQuery. Ce qui semble assez bien jusqu'à présent. Pourtant, je me demande s'il est possible de charger des modèles à partir d'un fichier externe en quelque sorte. Imaginez avoir des tas de modèles. Cela gâcherait le code html et ne serait pas non plus cacheable et devrait être téléchargé à chaque demande.charger jQuery-Templates à partir de fichiers externes?

J'espérais qu'il existe un moyen de les définir tous dans un fichier externe, puis de les charger et de stocker les modèles compilés dans localStorage.

Est-ce que quelqu'un a une idée comment les charger à partir d'un fichier externe?

Répondre

14

vous pouvez charger ce modèle avec ajax.

<script> 
    var movies = [ 
    { Name: "The Red Violin", ReleaseYear: "1998", Director: "François Girard" }, 
    { Name: "Eyes Wide Shut", ReleaseYear: "1999", Director: "Stanley Kubrick" }, 
    { Name: "The Inheritance", ReleaseYear: "1976", Director: "Mauro Bolognini" } 
    ]; 

    $.get("templates/movieTemplate.html", function(data, textStatus, XMLHttpRequest){ 
    var markup = data; //"<tr><td colspan='2'>${Name}</td><td>Released: ${ReleaseYear}</td><td>Director: ${Director}</td></tr>" 

    /* Compile markup string as a named template */ 
    $.template("movieTemplate", markup); 

    /* Render the named template */ 
    $.tmpl("movieTemplate", movies).appendTo("#movieList"); 
    }); 
</script> 

Vous pouvez ajouter maintenant la logique localstorage ou un tableau pour les modèles chargés si vous souhaitez charger un modèle une seule fois.

+0

+1 pour inclure par exemple sur l'utilisation .template() pour compiler et .tmpl $() pour rendre. Cela permet de répéter les appels à $ .tmpl() plus tard, sans avoir besoin d'aller chercher ou de compiler. – justis

+0

Il donne: TypeError: $ .template n'est pas une fonction – zygimantus

0

j'ai écrit récemment une bibliothèque javascript pour aider à ceci:

https://www.github.com/stevenmhunt/tmpl.loader

Vous pouvez ajouter jsRender ou tout autre type de fichiers de modèle en utilisant la balise <link> et ils enregistrer automatiquement.

+0

Le lien est rompu. :( – Luke

+0

Désolé, j'ai changé mon nom github il y a des années. –

1

j'ai écrit Litle lib comme plugin jQuery pour ajax rendu HTML sur le bloc apparaissent avec la mise en cache indexDB dans le navigateur jQuery HTML Template Loader

Questions connexes