2013-06-19 11 views
6

Ja wciąż próbuje owinąć głowę wokół biernej model programowania w Meteor, więc prawdopodobnie jest to głupie pytanie, ale:zmienna reaktywny przechwytywanie danych wprowadzanych przez użytkownika (Meteor)

Czy mogę używać systemu szablonów do wyodrębnić dane, zamiast "wstrzyknąć" je, jak to jest udokumentowane. To znaczy, że mam textarea jak tak

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

Czy jest więc możliwe, aby mieć dostęp do pola projectDescription jako reaktywnego źródła danych, jak to było? Nigdzie nie dostałem się z Template.project.projectDescription na REPL, ale jak już mówiłem, jestem nowy w tej grze.

Jeśli to, co proponuję, jest niemożliwe, jakie jest podejście idiomatyczne? Jak, gdzie mogę umieścić moją mapę zdarzeń na szablonie w taki sposób, jak to zostało zrobione? Chodzi o to, na przykład, sprawdzenie, czy dane wejściowe są unikatowe (pytanie serwera) lub czy robią "w locie" mkdn (tak jak dzieje się to PRAWO TERAZ, kiedy piszę ...). Ale przede wszystkim staram się wyczuć Meteor.

Odpowiedz

5

reaktywność jest tylko jeden sposób, można jednak zarejestrować zdarzenie w szablonie złapać keyDown zdarzenie, które może następnie ustawić zmienną sesji. Zmienne sesji są reaktywnymi źródłami danych, więc możesz użyć zmiennej i szablonu pomocnika, aby utworzyć swoją reaktywność w innej części szablonu.

Jako przykład:

<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

fajne beens. Właśnie to zaimplementowałem od czasu postawienia pytania. To zachęcające, że jestem mniej zdezorientowany, niż myślałem! – Ben

+0

Tak, muszę przyznać, że meteor może być mylący na początku, wtedy będziesz miał tę chwilę, kiedy to wszystko w końcu ma sens ... –

+0

Również ja osobiście polecam książkę Discover Meteor .. Trochę drogie jak na e-book, ale tam jest sporo wskazówek i sztuczek do pracy z meteorytem, ​​których nie można znaleźć nigdzie indziej. –

2

Meteor nie oferuje typu wiązania dwukierunkowego, które można napotkać w niektórych frameworkach. Nie mogą być inteligentne pakiety tam, aby pomóc w tym, ale sposób, wanilia jest powiązać zdarzenia do elementów DOM:

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

Pakiet session-bind twierdzi, że nie tylko: Wejście dwukierunkowe wiązanie do zmiennych sesyjnych. Jestem zaskoczony, że nie ma innych, które to robią.

Powiązane problemy