AngularJS textarea linebreak/saut de ligne conversion
J'ai un textarea avec le contenu peuplée par ng-modèle:
<textarea data-ng-model="messageBody"></textarea>
messageBody doit être stocké dans la base de données à l'aide de caractères de saut de ligne (\n) au lieu de les sauts de ligne. Cependant, lorsque j'utilise les regex pour convertir les retour à la ligne de saut de ligne et le passer au modèle, angulaire s'échappe de l'HTML. Est-il un moyen de passer le code HTML directement du modèle ou de la textarea sans qu'il soit converti? Ou, est-il un meilleur moyen pour convertir entre textarea sauts de ligne et les caractères de saut de ligne?
Mise à JOUR
Sur une inspection plus poussée, ce n'était pas un angulaires problème. Nous sommes le remplissage de la base de données (Postgres) à l'aide d'un script SQL. Il s'avère que les chaînes insérées dans la base de données n'étaient pas échappé. Depuis les chaînes contenues un caractère de saut de ligne, ce qui signifie qu'ils étaient en train d'être inséré directement sous forme de texte. Puis, de rupture de ligne de la manipulation de l'extrémité avant semblait être de produire des résultats incohérents de ce qui était initialement peuplé. Longue histoire courte, je me suis échappé de la base de données initiale de contenu afin de prendre en compte le caractère de saut de ligne, et tout fonctionne bien.
OriginalL'auteur Eric Di Bari | 2014-06-25
Vous devez vous connecter pour publier un commentaire.
De nouvelles lignes à l'intérieur d'un textarea sont de nouvelles lignes dans la chaîne résultante (
\n
).Ce violon démontre un tel comportement.
Si vous souhaitez stocker
\n
dans la base de données, il n'y a rien à faire, la chaîne est déjà de ce format.Si par "saut de ligne', tu veux dire que le
<br>
tag et vous signifie en réalité que la chaîne vient de la DB contenant de telles balises, alors vous devriez les remplacer à l'avance, je suppose.Idéalement, votre base de données devrait contenir des sauts de ligne (
\n
), vous devez vous enregistrer et récupérer des retours à la ligne à partir comme ça, pas de conversion.<pre>{{ text }}</pre>
dans votre exemple - si vous souhaitez afficher le texte en gardant le retour à la ligne mise en forme intacte.OriginalL'auteur JJJ
Oui, vous pouvez le faire dans AngularJS avec "SCE /Stricte Contextuelle s'Échapper". Continuer à convertir le saut de ligne à une mais les sauts de ligne et le passer au modèle.
Ensuite, lorsque vous affichez les données dans votre modèle, vous pouvez utiliser
$sce.trustAsHtml()
de préserver le contenu HTML, puisng-bind-html
directive pour la lier à la DOM. Voici un exemple de la façon dont il apparaît dans le contrôleur:Ensuite dans votre modèle, lier comme ceci:
Plus d'Infos sur
$sce
ici dans le AngularJS Docs.OriginalL'auteur Phong