7
votes

Chargement des guidons de guidon de manière asynchrone

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. XXX

Comment puis-je faire cela avec des promesses afin que je puisse faire quelque chose comme: xxx


8 commentaires

Éventuellement associé: Stackoverflow.com/Questtions/133310/...


@Peroferreira async: faux 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 . 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 n'a été obsolète que pour les objets jQXHR . Vous pouvez toujours l'utiliser avec succès , etc ...


@Pedroferreira ..non idée pourquoi vous essayez de défendre un concept indiquant clairement déprécut 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) est obsolète . Et je ne défends pas son utilisation, comme je l'ai déjà indiqué précédemment.


3 Réponses :


4
votes

Après ajoute un argument de données à la fonction gettemplate ainsi que le nom du modèle. xxx

Demo < / forte>


0 commentaires

16
votes

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);
    });
}


3 commentaires

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!



1
votes

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: xxx

mettre cela dans votre MAINPAPApp xxx

et Ils, par exemple, d'ouvrir un modal avec le modèle que vous souhaitez, il vous suffit: xxx

et n'oublier pas d'ajouter le fichier FactoryController et référentielController < / p>


0 commentaires