2013-06-19 5 views
6

Ich versuche immer noch meinen Kopf um das reaktive Programmiermodell in Meteor zu wickeln, so ist dies wahrscheinlich eine dumme Frage, aber:reaktive Variablen zu erfassen Benutzereingabe (Meteor)

Kann ich das Template-System verwenden, um extrahiere Daten, anstatt sie zu "injizieren", wie es dokumentiert ist. Das heißt, sagen, ich habe ein Textfeld wie so

 <textarea id="desc" rows="15" cols="80" > {{projectDescription}} </textarea> 

Ist es dann möglich, den Zugriff auf das Feld project als reaktive Datenquelle zu haben, wie es war? Ich bin mit Template.project.projectDescription an der REPL nirgendwohin gekommen, aber wie gesagt, ich bin neu in diesem Spiel.

Wenn was, was ich vorschlage, unmöglich ist, was ist der idiomatische Ansatz? Wie, wo würde ich meine

setzen

Ist eine Ereigniskarte auf der Vorlage die Art und Weise, wie dies geplant war? Der Sinn dessen ist, zu bestätigen, dass eine Eingabe einzigartig ist (eine Serverfrage) oder on-the-fly-mkdn zu machen (wie es gerade geschieht, während ich tippe ...). Aber meistens versuche ich ein Gefühl für Meteor zu bekommen.

Antwort

5

Reaktivität nur ein Weg ist, können Sie jedoch ein Ereignis auf der Vorlage registrieren, um die keydown zu fangen Ereignis, das dann eine Sitzungsvariable setzen könnte. Sitzungsvariablen sind reaktive Datenquellen, sodass Sie die Variable und einen Vorlagenhelfer verwenden können, um Ihre Reaktivität in einem anderen Teil Ihrer Vorlage zu erstellen.

Als Beispiel:

<template name="project> 
    <textarea id="desc"></textarea> 
    <div>{{projectDescription}}</div> 
</template> 

-

Template.project.events({ 
    "keydown #desc": function (event) { 
    var value = $(event.target).val(); 
    Session.set("projectDescription", value); 
    } 
}); 

Template.project.helpers({ 
    projectDescription: function() { 
    var projectDescription = Session.get("projectDescription"); 
    //do processing 
    return projectDescription; 
    } 
}); 
+0

cool been. Das ist ziemlich genau das, was ich seit dem Stellen der Frage umgesetzt habe. Es ist ermutigend zu sehen, dass ich weniger verwirrt bin, als ich gedacht habe! – Ben

+0

Ja, ich muss zugeben, dass Meteor zunächst verwirrend sein kann, dann wirst du den Moment haben, wenn alles endlich Sinn macht. –

+0

Auch ich persönlich empfehle das Buch Discover Meteor .. Wenig teuer für ein E-Book aber da Es gibt ziemlich viele Tipps und Tricks für die Arbeit mit Meteor, die man sonst nirgends finden kann. –

2

Meteor bietet nicht die Art von Zwei-Wege-Bindung, die Sie in einigen Frameworks gefunden haben könnten. Es kann Smart-Pakete sein, da draußen mit diesen zu helfen, aber der Vanille Weg Ereignisse DOM-Elemente zu binden:

Template.xyz.events({ 
    "keyup #desc": function (evt, template) { 
     Session.set("projectDescription", evt.currentTarget.value); 
    } 
});