Jak uzyskać dostęp do elementu tablicy dostępu według indeksu w kierownicy?

Próbuję określić indeks elementu w tablicy w szablonie kierownicy:

{
  people: [
    {"name":"Yehuda Katz"},
    {"name":"Luke"},
    {"name":"Naomi"}
  ]
}

Używając tego:

<ul id="luke_should_be_here">
{{people[1].name}}
</ul>

Jeśli powyższe nie jest możliwe, Jak napisać helpera, który mógłby uzyskać dostęp do elementu spefic wewnątrz tablicy?

Author: mikemaccana, 2011-11-07

9 answers

Spróbuj tego:

<ul id="luke_should_be_here">
{{people.1.name}}
</ul>
 421
Author: dhorrigan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-23 07:12:51

Poniższe, z dodatkową kropką przed indeksem , działa zgodnie z oczekiwaniami. W tym przypadku nawiasy kwadratowe są opcjonalne, gdy po indeksie następuje inna właściwość:

{{people.[1].name}}
{{people.1.name}}

Jednak nawiasy kwadratowe są wymagane W:

{{#with people.[1]}}
  {{name}}
{{/with}}

W tym ostatnim, używając numeru indeksu bez nawiasów kwadratowych otrzymamy jeden:

Error: Parse error on line ...:
...     {{#with people.1}}                
-----------------------^
Expecting 'ID', got 'INTEGER'

Na marginesie: nawiasy są (również) używane do składni segment-literal , aby odnosić się do rzeczywistych identyfikatorów (nie numery indeksów), które w przeciwnym razie byłyby nieprawidłowe. Więcej szczegółów w Co to jest prawidłowy identyfikator?

[[6]}(testowane z kierownicą w YUI.)

2.XX Update

Możesz teraz użyć get helpera do tego:

(get people index)

Chociaż Jeśli pojawi się błąd o indeksie, który musi być ciągiem, wykonaj:

(get people (concat index ""))
 329
Author: Arjan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-28 16:13:35
{{#each array}}
  {{@index}}
{{/each}}
 24
Author: FMQB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-15 04:05:56

Jeśli nieudokumentowane funkcje nie są Twoją grą, to samo można osiągnąć tutaj:

Handlebars.registerHelper('index_of', function(context,ndx) {
  return context[ndx];
});

Następnie w szablonie

{{#index_of this 1}}{{/index_of}}   

Napisałem wyżej zanim dostałem

this.[0]
Nie widzę, żeby ktoś posunął się za daleko z kierownicą bez pisania własnych pomocników.
 18
Author: Bret Weinraub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-10 18:15:27

Jeśli chcesz użyć zmiennych dynamicznych

To nie zadziała:

{{#each obj[key]}}
...
{{/each}}

Musisz zrobić:

{{#each (lookup obj key)}}
...
{{/each}}

Zobacz handlebars lookup helper i podekspresje kierownicy .

 10
Author: julesbou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-31 15:08:39

Podczas zapętlania tablicy za pomocą each i jeśli chcesz uzyskać dostęp do innej tablicy w kontekście bieżącego elementu, zrób to tak.

Oto przykładowe dane.


[
  {
    name: 'foo',
    attr: [ 'boo', 'zoo' ]
  },
  {
    name: 'bar',
    attr: [ 'far', 'zar' ]
  }
]

Oto kierownica, aby uzyskać pierwszy element w tablicy attr.

{{#each player}}
  <p> {{this.name}} </p>

  {{#with this.attr}}
    <p> {{this.[0]}} </p>
  {{/with}}

{{/each}}

To wyświetli

<p> foo </p>
<p> boo </p>

<p> bar </p>
<p> far </p>
 9
Author: Fatih Acet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-16 14:31:13

Spróbuj tego, jeśli chcesz pobrać pierwszy/ostatni.

{{#each list}}

    {{#if @first}}
        <div class="active">
    {{else}}
        <div>
    {{/if}}

{{/each}}


{{#each list}}

    {{#if @last}}
        <div class="last-element">
    {{else}}
        <div>
    {{/if}}

{{/each}}
 8
Author: user1378423,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-25 13:29:39

Można również użyć następującej składni, jeśli tablica nie jest nazwana (tylko tablica jest przekazywana do szablonu):

  <ul id="luke_should_be_here">
  {{this.1.name}}
  </ul>
 1
Author: José,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-16 12:45:11

W moim przypadku chciałem uzyskać dostęp do tablicy wewnątrz custom helper jak TAK,

{{#ifCond arr.[@index] "foo" }}

Który nie zadziałał, ale odpowiedź zaproponowana przez @ julesbou zadziałała.

Kod roboczy:

{{#ifCond (lookup arr @index) "" }}
Mam nadzieję, że to pomoże! Zdrowie.
 0
Author: Sharukh Mastan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-09 12:02:49