J'essaie d'écrire une fonction qui me donnera un modèle de guidon compilé (j'ai tous mes modèles dans des fichiers séparés) à l'aide d'un appel AJAX pour obtenir le modèle et la compiler pour une utilisation, mais je dois utiliser une promesse Donc, je peux réellement l'utiliser. Comment puis-je faire cela avec des promesses afin que je puisse faire quelque chose comme: p>
3 Réponses :
Après ajoute un argument de données à la fonction Demo < / forte> kbd> p> p> gettemplate code> ainsi que le nom du modèle.
chovy, je vois que vous avez accepté une réponse, mais vous êtes peut-être intéressé de savoir que gettemplate code> peut, en chaînait
.then () code> plutôt que
.Success () code>, être écrit presque comme dans la question:
function getTemplate(name, data) {
return $.get('/'+name+'.hbs').then(function(src) {
return Handlebars.compile(src)(data);
});
}
Merci pour l'acceptation Chovy, bien que je préfère sentir que j'ai volé le représentant de Charlie: - |
N'oubliez pas que Ajax est ASYNC et vous devriez probablement utiliser un rappel dans cette fonction pour vous assurer de ne pas avoir de problèmes. Utilisé ce code et avait ce problème exact
Ah vient de remarquer qu'il utilise .done sur l'appel de la fonction actuelle ... Doh!
J'ai créé une bibliothèque pour vous aider avec ce type de problème, vérifier chez Github < P> Il vous suffit d'ajouter ceci à votre point de vue principale: p> mettre cela dans votre MAINPAPApp P> et Ils, par exemple, d'ouvrir un modal avec le modèle que vous souhaitez, il vous suffit: P> et n'oublier pas d'ajouter le fichier FactoryController et référentielController P> < / p>
Éventuellement associé: Stackoverflow.com/Questtions/133310/...
@Peroferreira
async: faux code> est obsolète et est une solution terrible
@charlietfl Oui, je suis d'accord. Mais il peut toujours être intéressant comme une option, dans certains cas.
@Pedroferreira Il existe de nombreuses façons d'éviter d'utiliser. Notez que le lien que vous avez fourni a 5 ans
@charlietfl Je ne préconise pas l'utilisation de
async: false code>. Je l'ai simplement mentionné comme étant lié à cette discussion et à une solution possible (bien généralement mauvaise, je suis d'accord). Je ne suggère pas que l'OP l'utilise, sinon je l'aurais posté comme une réponse.
De plus, autant que je puisse le voir, l'utilisation de
async: false code> n'a été obsolète que pour les objets
jQXHR code>. Vous pouvez toujours l'utiliser avec
succès code>, etc ...
@Pedroferreira ..non idée pourquoi vous essayez de défendre un concept indiquant clairement
déprécut code> dans Docs et est une mauvaise idée obsolète
Du Docs: AS de JQuery 1.8, l'utilisation d'ASYNC: FALSE avec JQXHR ($ .Deferred) b> est obsolète i>. Et je ne défends pas son utilisation, comme je l'ai déjà indiqué précédemment.