2013-06-10 14 views
14

Sto lavorando a un progetto con Meteor, e voglio che utilizzi markdown, ed è stato molto bello vedere che c'è un pacchetto con cui farlo.Come si usa Markdown con Meteor

Così ho meteora showdown aggiunto, ha funzionato, e ora posso fare qualcosa di simile

{{#markdown}} 
    #This is a header 

    this is a paragraph 
{{/markdown}} 

e funziona bene. Ma ora voglio davvero mettere qualcosa di più interessante lì dentro. Il primo pensiero è stato quello di sincronizzarlo con una textarea. Ho provato tre cose. In primo luogo, ho provato questo:

$('.preview').html('{{#markdown}}'+$('#text').val()+'{{/markdown}}'); 

Dove .preview è un div che voglio html di presentarsi in, e #text è la textarea in cui qualcuno sta scrivendo. Questo però non funziona, mostra solo {{#markdown}} e altro.

successiva, ho cercato di impostare solo il div in questo modo:

<div class="preview"> 
    {{#markdown}} 

    {{/markdown}} 
</div> 

e aggiungere ad essa con:

$('.preview').html('#Is this an H1?'); 

o

$('.preview').append('*is this italics?*'); 

Ma ancora una volta, è solo ha mostrato il testo, non l'html.

Infine, ho provato la roba di codifica nella sezione markdown, ma questo chiaramente non ha funzionato. Cose come

<div class="preview"> 
    {{#markdown}} 
     <div class="previewInner"> 

     </div> 
    {{/markdown}} 
</div> 

o

<div class="span6 preview"> 
    {{#markdown}} 
     {{>innerPreview}} 
    {{/markdown}} 
</div> 

Quindi, in pratica, ho provato tutto quello che mi viene in mente e nessuno di esso fa quello che voglio. Ho provato altre cose, ma penso che tu abbia avuto l'idea. Come dovrei usare questo?

È facile: basta inserire il contrassegno all'interno dei tag {{#markdown}} ... {{/ markdown}}.

+0

Io uso Markdown in http: //superchat.meteor .com/ma con il pacchetto segnato.È la stessa sintassi. Basta dare un'occhiata al codice: https://github.com/gabrielhpugliese/meteor_superchat/blob/master/client/views/chatroom.html – gabrielhpugliese

risposta

15

Tutto all'interno Markdown Markdown è considerato quindi assicuratevi di fare questo:

{{#markdown}}{{>innerPreview}}{{/markdown}} 

Invece di

{{#markdown}} 
    {{>innerPreview}} 
{{/markdown}} 

jQuery non avrebbe funzionato perché {{markdown}} è reso prima che il DOM è messo a posto.

utilizzare invece una sessione

Template.hello.markdown_data = function() {return Session.get("markdown_data")}); 

Poi il modello

{{#markdown}}{{{markdown_data}}}{{/markdown}} 

quindi memorizzare il documento Markdown in

Session.set("markdown_data","<your markdown data>");

+0

Grande, questo ha funzionato più come previsto. Tranne che non riesco a convincerlo a fare blockquotes. Showdown ha tutto da http://daringfireball.net/projects/markdown/syntax? – user1624005

+0

@ user1624005 probabilmente no (github non lo fa), nessun danno sollevando una richiesta pull se lo si desidera. – booyaa

+1

È possibile utilizzare il pacchetto markdown denominato contrassegnato. Sembra avere supporto per blockquotes. È sull'atmosfera: https://atmosphere.meteor.com/package/marked – cutemachine