2013-07-30 6 views
13

Oto typowy Kierownice pomocnik:jak przekazać parametry do pomocnika Handlebars? Jaka jest różnica między options.hash & options.data

Ember.Handlebars.helper 'myHelper', (value, options) -> 
    ... 

Według this protip można przekazać hash do kierownicy pomocników. Spojrzałem na źródło i okazało się, że zapewnia ono zarówno . Jestem nieco mylić, ponieważ nie będzie działać zgodnie z oczekiwaniami:

{{#with controllers.currentCardCategory}} 
    {{#each property in cardProperties}} 
    <td class="td">{{cardProperty this property=property.symbol}}</td> 
    {{/each}} 
{{/with}} 

this jest obecny Card rekord. Tutaj mam property.symbol jako ciąg

Ale to działało:

{{#with controllers.currentCardCategory}} 
    {{#each property in cardProperties}} 
    <td class="td">{{cardProperty this property.symbol}}</td> 
    {{/each}} 
{{/with}} 

a wartość była dostępna poprzez options.

Ale teraz nie mogę tego zrobić:

{{#with controllers.currentCardCategory}} 
    {{#each property in cardProperties}} 
    <td class="td">{{cardProperty this property.symbol anotherParam yetAnotherParam}}</td> 
    {{/each}} 
{{/with}} 

Moje pytanie brzmi: jak przekazać inne parametry do pomocnika i jaka jest różnica między options.hash i options.data w pomocnika?

Odpowiedz

14

Parametry przekazane do helpera stają się arguments dla funkcji pomocnika. Wartości podane w szablonie natychmiast po {{helperName stają się argumentami. Ostatnim argumentem przekazanym do helpera jest obiekt options, który dostarcza dodatkowych informacji pomocnikom, takim jak: options.hash i options.contexts itd. Pary wartości klucza dostarczone po parametrach odpowiadają właściwości options.hash.

Dla hello pomocnika, który trwa 3 argumenty, pomocnik byłoby

Ember.Handlebars.helper('hello', function(a, b, c, options) { 
    return '%@ - %@ - %@'.fmt(a, b, c); 
}); 

hello pomocnik może być używany w szablonie jak tak,

{{hello lorem ipsum dolor}} 

Tutaj wartości lorem, ipsum i dolor właściwości będą używane i zwracane jako połączone ciągi.

Oprócz wymaganych argumentów, dodatkowe parametry będą dostępne pod numerem options.hash. Te właściwości są traktowane jako łańcuchy i domyślnie nie są rozwiązywane. Będziesz musiał użyć, options.data.view, aby najpierw sprawdzić ich wartości. Zobacz ten answer na przykład, jeśli musisz to zrobić. Domyślnie options.data jest specjalną własnością dostarczoną pomocnikom To surowe kierownice Frame przechowują zmienne, konteksty i tak dalej. Jest głównie do użytku z pomocnikami bloków. Ponieważ pomocnicy bloków nie renderują się, ale wywołują innych pomocników, options.data pozwala takim pomocnikom blokowym wprowadzić dodatkowe zmienne do ramki pomocników podrzędnych. Aby uzyskać szczegółowe informacje, zapoznaj się z dokumentami here.

Oto przykład: jsbin.