2016-03-13 8 views

Odpowiedz

21

Z dokumentacji

{{if rurociąg}} {{T1 end}}: Jeżeli wartość rurociągu jest pusty, nie wyjściowy jest generowany; w przeciwnym razie wykonywany jest T1. Puste wartości to: false, 0, dowolny wskaźnik zerowy lub wartość interfejsu i dowolna tablica, plaster, mapa lub ciąg o długości zero. Dot nie ma wpływu.

Więc jeśli chcesz sprawdzić, czy .SearchData plaster/tablica/mapa jest pusta po prostu użyć,

{{if not .SearchData}} Nothing to show {{end}} 

Nawet Twój kod działa poprawnie, jeśli ciąg "0" zastępuje int 0

{{ $length := len .SearchData }} {{ if eq $length 0 }} 
    Sorry. No matching results found 
{{ end }} 

http://play.golang.org/p/Q44qyRbKRB

+0

Z jakichś powodów '{{$ długość: = len .SearchData}} {{if eq $ długość 0}} 'nie działa w moim szablonie html. Ale '{{if not .SearchData}}' działa. Ale w niektórych scenariuszach muszę użyć 'eq' z różnymi wartościami [aby ograniczyć wyniki]. – Dany

+0

Rozumiem, że musisz sprawdzić inne wartości. Nie mogę wymyślić, dlaczego to nie będzie działać dla Ciebie :(musi być coś poza szablonami. Czy jesteś pewien, że przekazujesz zamierzoną wartość dla 'SearchData'? –

+0

Tak. Przekazuję wcięte wartości, ponieważ' {{if nie .SearchData}} "działa zgodnie z oczekiwaniami. Testowałem z pustą listą i listą z pewnymi wartościami – Dany

15

Krótsza wersja

{{ if eq (len .SearchData) 0 }} 
    Sorry. No matching results found 
{{ end }} 
1

Jest {{ else }} dla {{ range }} działa dobrze na mapach oraz https://play.golang.org/p/7xJ1LXL2u09:

{{range $item := . }}  
    <span>{{ $item }}</span> 
{{ else }} 
    <span>Sorry no rows here</span> 
{{ end }}