2012-07-25 15 views
26

Chcę realizować następujące logiki z wąsem:Wąsy - jak wykryć tablicę nie jest pusta?

{{#if users.length > 0}} 
    <ul> 
     {{#users}} 
      <li>{{.}}</li> 
     {{/users}} 
    </ul> 
{{/if}} 

// eg. data = { users: ['Tom', 'Jerry'] } 

powinienem zmodyfikować strukturę users, aby zaspokoić potrzeby? Na przykład:

{{#hasUsers}} 
    <ul> 
     {{#users}} 
      <li>{{.}}</li> 
     {{/users}} 
    </ul> 
{{/hasUsers}} 

// eg. data = { hasUsers: true, users: ['Tom', 'Jerry'] } 
+2

Tak, wierzę, że będą musieli zmodyfikować dane jak zrobiłeś z ' hasUsers'. Inną opcją jest użycie bardziej wytrzymałego [Handlebars] (http://handlebarsjs.com/), który obsługuje ten dokładny przypadek na swojej stronie głównej. – maxbeatty

Odpowiedz

44

Przepraszamy, może być już za późno. Ale miałem podobny wymóg i znaleźć lepszy sposób, aby to zrobić: próbkę

{{#users.length}} 
    <ul> 
     {{#users}} 
      <li>{{.}}</li> 
     {{/users}} 
    </ul> 
{{/users.length}} 
{{^users.length}} 
    <p>No Users</p> 
{{/users.length}} 

pracy tutaj: http://jsfiddle.net/eSvdb/

+4

Należy jednak pamiętać, że nie jest to standardowa funkcja wąsów. Różni się w zależności od implementacji Moustache. – corgrath

+0

Nigdy nie za późno na SO :) – jClark

+0

Mogę potwierdzić, jak powiedział @corgrath, że jest to zależne od implementacji: nie działa z biblioteką samsądrów Java Mustache. – penguin86

17

Korzystanie {{# users.length}} działa świetnie, jeśli chcesz wewnętrzną oświadczenie powtórzyć dla każdy element tablicy, ale jeśli chcesz tylko oświadczenie tylko uruchomić raz, można użyć:

{{#users.0}} 
... 
{{/users.0}} 
{{^users.0}} 
... 
{{/users.0}} 
+5

w ten sposób działa również z php, ponieważ tablice nie mają właściwości length. – JacopKane

+1

Na pewno działa w wąsy dla PHP – Michael

+1

jest to poprawna odpowiedź – stewart715

Powiązane problemy