2012-07-12 11 views
40

Ho una proprietà ember che include tag html (<br />, <strong>, <p>, <span> e materiale simile).Mostra proprietà che include tag html

Come posso dire a ember di non sfuggire questo testo? Esiste un aiutante di Handlebars predefinito da ember o ho bisogno di scrivere il mio?

risposta

79

Da http://handlebarsjs.com/

Manubrio HTML-sfugge valori restituiti da un {{expression}}.
Se non si desidera che i manubri sfuggano a un valore, utilizzare "triple-stash".

{{{expression}}}

+2

Nel caso in cui qualcuno sta cercando l'equivalente dell'Emblem, il suo '== expression' – dhilipsiva

+0

Come menzionato da morhook, puoi anche racchiudere il valore in [Ember.String.htmlSafe()] (http://emberjs.com/api/classes/Ember.String .html # method_htmlSafe). Ciò è utile se il valore viene passato in un componente aggiuntivo/componente di cui non si ha il pieno controllo. – kjb

16

All'interno Ember.js è possibile farlo tramite il metodo htmlSafe, che viene aggiunto al prototipo String, vedere http://jsfiddle.net/pangratz666/jNAQ6/:

Manubrio:

<script type="text/x-handlebars" > 
    {{App.html}} - {{App.unescaped}} 
</script>​ 

JavaScript:

App = Ember.Application.create({ 
    html: '<b>bold text</b>', 
    unescaped: function(){ 
     return this.get('html').htmlSafe(); 
    }.property('html') 
});​ 
+0

Questo non funziona. {{App.html}} eliminerà anche gli elementi html – TMQuinn

+0

'.htmlSafe()' è il metodo che mi serviva – kevnk

+2

Per l'ultima versione di Ember (2.6.1), ho usato il metodo [Ember.String.htmlSafe()] (http://emberjs.com/api/classes/Ember.String.html#method_htmlSafe) – morhook

3

Ember 2.x, utilizzando JavaScript

Per fare una stringa senza caratteri di escape e l'uscita utilizzando modelli Ember è possibile utilizzare htmlSafe aiutante.

Ember.String.htmlSafe('<div>someString</div>') 

La stringa restituita non verrà sottoposta a escape HTML dal motore di template di Handlebars.

http://emberjs.com/api/classes/Ember.String.html#method_htmlSafe

Usa Manubrio Solo

In alternativa, è possibile passare il codice HTML grezzo modello di manubrio e ottenere l'output HTML grezzo utilizzando parentesi triple

All'interno Manubrio Template

<div>{{{raw_html_content}}}</div>