2016-03-13 15 views

Antwort

21

von der Dokumentation,

{{if Pipeline}} {{T1 end}}: Wenn der Wert der Pipeline leer ist, wird kein Ausgang erzeugt wird; Ansonsten wird T1 ausgeführt. Die leeren Werte sind false, 0, ein beliebiger Nil-Zeiger oder Schnittstellenwert und ein beliebiges Array, Slice, Map oder eine Zeichenfolge der Länge Null. Punkt ist nicht betroffen.

Wenn Sie also, wenn die .SearchData Scheibe/Array überprüfen möchten/Karte leer ist nur verwenden,

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

Auch Ihr Code läuft gut, wenn der String "0" durch int ersetzt 0

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

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

+0

Aus irgendwelchen Gründen '{{$ Länge: = len .SearchData}} {{if eq $ length 0}} 'funktioniert nicht in meiner HTML-Vorlage. Aber '{{wenn nicht .Suchdaten}}' funktioniert. Aber in einigen Szenarien muss ich 'eq' mit verschiedenen Werten verwenden [um die Ergebnisse einzuschränken]. – Dany

+0

Ich verstehe, dass Sie nach anderen Werten suchen müssen. Ich kann mir nicht vorstellen, warum es nicht für dich funktionieren würde :(Muss etwas außerhalb von Templates sein. Bist du sicher, dass du den beabsichtigten Wert für 'SearchData' übergibst? –

+0

Yeah. Ich übergebe die eingerückten Werte weil' {{if nicht .SearchData}} funktioniert wie erwartet. Ich habe mit 'empty' Liste und mit einigen Werten getestet – Dany

15

Eine kürzere Version

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

Es gibt {{ else }} für {{ range }} für Karten gut funktioniert auch https://play.golang.org/p/7xJ1LXL2u09:

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