2015-04-28 14 views
6

W instrukcji obsługi 2+, w jaki sposób mogę dynamicznie odczytać właściwość w takiej pętli? objects to tablica obiektów. keys to tablica łańcuchów. Chcę zapętlić każdy klucz dla każdego obiektu i umieścić jego wartość .foo w span.Wyszukiwanie dynamiczne właściwości kierownicy w każdej pętli

{{#each objects}} 
    {{#each keys}} 
     <span>{{../this.{{this}}.foo}}</span> 
    {{/each}} 
{{/each}} 

Czy to możliwe w zwykłych kierownicach 2+? Lub ... czy istnieje helper, który to robi?

Odpowiedz

7

Nie widzę sposobu, w jaki można to zrobić bez pomocy.
Z pomocnikami wszystko jest możliwe (ale raczej brzydkie) w kierownicy.

Na przykład, można użyć coś takiego:

{{#each objects}} 
    {{#each keys}} 
     <span>{{lookupProp ../this this 'foo'}}</span> 
    {{/each}} 
{{/each}} 

And pomocnika:

Handlebars.registerHelper('lookupProp', function (obj, key, prop) { 
    return obj[key] && obj[key][prop]; 
}); 

Spójrz na fiddle.

Kierownica ma wbudowaną wersję lookuphelper od wersji 3.0.3.

1

Dobra ... spędził kilka godzin googling wokół i znaleźć ładne rozwiązanie, ponieważ miałem ten sam problem, ale nie udało się znaleźć żadnego ...

byłem tak szczęśliwy, jak Larry i zeskoczył z krzesła kiedy w końcu zorientowali sposób, aby uzyskać tej pracy: D

ten sposób można dostępu wartości obiektu z dynamicznymi kluczami,

obiekt Demo:

var categories = { 
    onion: { name: 'bar', id: 4 }, 
    apple: { name: 'demo', id: 2 }, 
    carrot: { name: 'foo', id: 3 }, 
    Root: [ 
     { name: 'apple' }, 
     { name: 'onion' }, 
     { name: 'carrot' } 
    ] 
}; 

Zamiast próbować coś, takie jak: (co nie będzie działać)

{{#each categories.[@key]}} 
or 
{{#each categories.[mykey]}} 

można zrobić:

{{#each categories.[Root] as |main-category|}} 

    {{#each (lookup ../categories main-category.name) as |sub-category|}} 

     {{sub-category.name}} 

    {{/each}} 

{{/each}} 

nadzieję, że pomoże dla kogoś zbyt :)

1

dla nikogo jeśli nie chcesz zapętlić, możesz użyć np. with.

{{#with (lookup myObject myKeyVar) as |subObject|}} 
    {{subObject.key}} 
{{/with}} 
Powiązane problemy