2015-06-24 8 views
5

Nowy Meteor i doceniam każdą pomoc - walczymy z tym. Więc mam szablon, który jest sporządzony warunkowo:Meteor.js - ustawianie ostrości w celu utworzenia pola wprowadzania danych przy szablonowym refaktorze

{{#if creating}} 
    <form class="form-create"> 
    <input name="name" type="text" id="mainInput"> 
    <button type="submit">Submit</button> 
    <a class="cancel" href="#">Cancel</a> 
    </form> 
{{else}} 
    <a class="create" href="#">Create</a> 
    {{/if}} 

który działa dobrze - kliknięcie linku wezwania kotwica formularz na drodze „Tworzenie” zmiennej biernej sesji anulować wezwania stanowić kotwicę.

Mój problem pojawia się, gdy pojawia się formularz, chciałbym ustawić wejście (#mainInput), aby ustawić ostrość. Teraz ten kod zadziała, jeśli podłączyć go do przycisku lub coś (ustawia wejście skupić więc wiem jQuery działa - na przykład:

"click .focusBtn": function(e, tpl) { 

    tpl.$("#mainInput").focus(); 
    tpl.$("#mainInput").select(); //might as well select the entire thing too 

}

Ale mogę” t skupmy się na "skupieniu się" na przerysowaniu ekranu z kotwicy do postaci!

Próbowałem podłączyć go do zmiennej sesji (Tworzenie) - tak, że za każdym razem zmienia się tworzenie (console.log I zobacz Tworzenie przełącznika z wartości true na false, Sprawdzam poprawność Tworzenie jest prawdziwe, wywołuj fokus z tego bloku pomocniczego, ale bez zmian)

Próbowałem również tracker do tworzenia sesji var - tak, bezskutecznie, ostrość nie zostanie uzyskana:

Tracker.autorun(function() { 
    var creating = Session.get('creating'); 
    console.log('Autorun is auto-running!'); 
    console.log(creating); 

    if (creating) { 
     $('#mainInput').focus(); // I tried documentbyID, etc but nothing 
    } 
}); 

Zdaję sobie sprawę, może to mieć coś wspólnego z Tracker, czy może istnieje "hook" nie jestem świadomy (próbowałem renderowanego szablonu, ale wydaje mi się, że to działa tylko przy pierwszym tworzeniu). Czytam teraz poradnik, ale wciąż jest to nowe i każda pomoc/wskazówki są mile widziane. Dzięki!

Odpowiedz

6

Byłaś na dobrej drodze, wystarczy użyć rejestrację Tracker.afterFlush zwrotnej, aby wykonać połączenie focus kiedy Meteor miał szansę uczynić wejście po zmiennej Session został unieważniony i Spacebars {{#if}} zablokuj pomocnika wybraną ścieżkę.

Tracker.autorun(function() { 
    var creating = Session.get('creating'); 
    if (creating) { 
    Tracker.afterFlush(function(){ 
     $('#mainInput').focus(); 
    }); 
    } 
}); 
+0

działa jak marzenie! Skały meteoru (i ty też)! Dzięki. – jd1138

+0

Inna metoda znikąd ... ale działa! – TyrionGraphiste

2

spróbuj dodać autofocus

<input name="name" type="text" id="mainInput" autofocus> 
+0

Próbowałem też! Świetna funkcja - ale skupia się tylko na początkowym losowaniu i nigdy później (przełączanie między anulowaniem/tworzeniem). – jd1138

+0

Fajnie, nie wiedziałem o tym! – Rijk

Powiązane problemy