2016-03-13 38 views

risposta

21

Da documentazione,

{{se conduttura}} T1 {{end}}: Se il valore della pipeline è vuota, non output viene generato; altrimenti, viene eseguito T1. I valori vuoti sono false, 0, qualsiasi puntatore nullo o valore di interfaccia e qualsiasi matrice, porzione, mappa o stringa di lunghezza zero. Il punto non è interessato.

Quindi, se si desidera controllare se il .SearchData fetta/array/carta è vuota basta usare,

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

Anche il codice viene eseguito correttamente se la stringa "0" è sostituito dal int 0

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

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

+0

Per alcuni motivi '{{$ length: = len .SearchData}} {{if eq $ lunghezza 0}} 'non funziona nel mio template html. Ma '{{if not .SearchData}}' funziona. Ma in alcuni scenari devo usare 'eq' con valori diversi [per limitare i risultati]. – Dany

+0

Capisco la necessità di verificare altri valori. Non riesco a pensare al motivo per cui non funzionerebbe per te :(Deve essere qualcosa fuori dai template. Sei sicuro di aver passato il valore previsto per 'SearchData'? –

+0

Sì. Sto passando i valori indentati perché' {{if not .SearchData}} 'funziona come previsto. Ho provato con la lista' empty' ed elencato con alcuni valori – Dany

15

Una versione più corta

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

C'è {{ else }} per {{ range }} funziona bene per le mappe così https://play.golang.org/p/7xJ1LXL2u09:

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